お世話になっております。
Paiza.ioでPHPの挙動を学習中です。
PHPの関数に、array_diffがあると思いますが、
その処理結果について、腑に落ちないところがあります。
例えば、
september という文字列と、
septembar という、
わざと最後から二番目の文字を誤った表記にした文字列を配列にし、
array_diffでどのような差の結果が返ってくるか、確認したのですが、下記のようになりました。
PHP
1<?php 2 // 最後から2番目の文字列のみ差をつけ確認 3 $correct = ["s", "e", "p", "t", "e", "m", "b", "e", "r"]; 4 $wrong = ["s", "e", "p", "t", "e", "m", "b", "a", "r"]; 5 6 var_dump(array_diff($correct, $wrong)); 7?> 8 9//出力結果 10 array(0) { 11 }
上記結果に対し、公式ドキュメントを見ると、第一引数内の値にあるものと、第二引数以降のものを比較し、
第二引数以降側にないものを配列として第一引数から返す、という理解でいます。
ただ、下記のように文字数を1対1にし、比較すると、認識どおりの結果が返ってきます。
PHP
1<?php 2 // 1文字のみで差を確認 3 $correct = ["e"]; 4 $wrong = ["a"]; 5 6 var_dump(array_diff($correct, $wrong)); 7?> 8 9//出力結果 10array(1) { 11 [0]=> 12 string(1) "e" 13} 14
この挙動の差は、何が理由で起きているのかが、解決できずにいます。
お手数ですが、もしよろしければ、ご教示いただけますと、幸いです。
どうぞよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/08 12:28