requireの/
はどれだけあってもいい。
PHPの仕様というより、OSの仕様らしい。
test.php
test.php
<?php
require_once './/////////////////include.php';
include.php
include.php
<?php
echo 'hoge';
実行結果
$ php test.php
hoge
メソッドの引数が少ないのはダメだが、多い分には問題無い
引数が少ない場合
<?php
function say($hoge) {
echo $hoge . PHP_EOL;
}
say();
$ php test.php
Warning: Missing argument 1 for say(), ...
引数が多い場合
<?php
function say($hoge) {
echo $hoge . PHP_EOL;
}
say('fizz', 'buzz');
$ php test.php
fizz
配列のインデックスと配列の順番は関係無い
配列には順番があるが、それは配列のインデックス(キー)とは別の概念である。他の言語をやっているとハマる。
勘違いしそうな例1
<?php
$array = [];
$array[0] = 0;
$array[4] = 4;
$array[2] = 2;
$array[3] = 3;
$array[1] = 1;
var_dump($array);
// 配列の3番目以降を切り出す
$sliced_array = array_slice($array, 3);
var_dump($sliced_array);
$ php test.php
array(5) {
[0]=>
int(0)
[4]=>
int(4)
[2]=>
int(2)
[3]=>
int(3)
[1]=>
int(1)
}
array(2) {
[0]=>
int(3)
[1]=>
int(1)
}
// [3, 4] が取り出されるわけではない
// インデックスも張り替えられる
インデックスではなく、配列に入れた順番で後ろの二つが切り出される。
勘違いしそうな例2
<?php
$array1 = [];
$array1[0] = 0;
$array1[4] = 4;
$array1[2] = 2;
$array1[3] = 3;
$array1[1] = 1;
$array2 = [];
$array2[0] = 0;
$array2[1] = 1;
$array2[2] = 2;
$array2[3] = 3;
$array2[4] = 4;
var_dump($array1 === $array1);
var_dump($array1 === $array2);
$ php test.php
bool(true) // 同じ配列を比較しているので当然true
bool(false) // キー => 値 の組み合わせが同じでも順番が違うのでfalse
str_replace の第一引数の配列を渡した時の処理順について
var_dump(str_replace(["\t", "\n", "\r\n", "\r"], " ", "\r\n"));
var_dump(str_replace(["\t", "\r\n", "\n", "\r"], " ", "\r\n"));
string(2) " "
string(1) " "
どういうことかというと、
str_replace($array, $after, $str) {
foreach($array as $before) {
str_replace($before, $after,$str);
}
}
みたいな感じになっていると思われる。