2016-04-28 12 views
0

私はifというステートメントの下に配列に値が存在するかどうかをチェックし、値が存在しない場合はそこに追加します。 値が配列内にあっても、値が再度トリガーされるようです。PHPのin_array()が正しく動作しない

それだけでこのように、3回の引き金になるので、私の知る限り理解し、それはそれぞれの値の表示のみ1は、すべきである:

Digital Photography -> 0 
Step by Step Macintosh Training -> 0 
How to become a Powerful Speaker -> 0 

コード:

if (!in_array($unit['course_name'], $courseList)) { 

    $courseList[$unit['course_name']]['name'] = $unit['course_name']; 
    $courseList[$unit['course_name']]['seconds'] = 0; 
    echo $courseList[$unit['course_name']]['name'] . ' -> ' . $courseList[$unit['course_name']]['seconds']; 
    echo "<BR>"; 

} 

しかし、それは出力:ここでは

Digital Photography -> 0 
Step by Step Macintosh Training -> 0 
Step by Step Macintosh Training -> 0 
Step by Step Macintosh Training -> 0 
How to become a Powerful Speaker -> 0 
How to become a Powerful Speaker -> 0 

var_dump($unit)です:

array(8) { ["author_name"]=> string(10) "tuiuiu_dev" [0]=> string(10) "tuiuiu_dev" ["course_name"]=> string(19) "Digital Photography" [1]=> string(19) "Digital Photography" ["unit_id"]=> string(3) "181" [2]=> string(3) "181" ["unit_quantity"]=> string(1) "1" [3]=> string(1) "1" } 
array(8) { ["author_name"]=> string(15) "William Merussi" [0]=> string(15) "William Merussi" ["course_name"]=> string(31) "Step by Step Macintosh Training" [1]=> string(31) "Step by Step Macintosh Training" ["unit_id"]=> string(3) "227" [2]=> string(3) "227" ["unit_quantity"]=> string(1) "1" [3]=> string(1) "1" } 
array(8) { ["author_name"]=> string(15) "William Merussi" [0]=> string(15) "William Merussi" ["course_name"]=> string(31) "Step by Step Macintosh Training" [1]=> string(31) "Step by Step Macintosh Training" ["unit_id"]=> string(3) "231" [2]=> string(3) "231" ["unit_quantity"]=> string(1) "1" [3]=> string(1) "1" } 
array(8) { ["author_name"]=> string(15) "William Merussi" [0]=> string(15) "William Merussi" ["course_name"]=> string(31) "Step by Step Macintosh Training" [1]=> string(31) "Step by Step Macintosh Training" ["unit_id"]=> string(3) "233" [2]=> string(3) "233" ["unit_quantity"]=> string(1) "1" [3]=> string(1) "1" } 
array(8) { ["author_name"]=> string(10) "tuiuiu_dev" [0]=> string(10) "tuiuiu_dev" ["course_name"]=> string(32) "How to become a Powerful Speaker" [1]=> string(32) "How to become a Powerful Speaker" ["unit_id"]=> string(4) "1080" [2]=> string(4) "1080" ["unit_quantity"]=> string(1) "1" [3]=> string(1) "1" } 
array(8) { ["author_name"]=> string(10) "tuiuiu_dev" [0]=> string(10) "tuiuiu_dev" ["course_name"]=> string(32) "How to become a Powerful Speaker" [1]=> string(32) "How to become a Powerful Speaker" ["unit_id"]=> string(4) "1084" [2]=> string(4) "1084" ["unit_quantity"]=> string(1) "1" [3]=> string(1) "1" } 

ありがとうございました!

+1

ここで、/ howは最初に割り当てられた '$ courseList'ですか? –

+0

'$ courseList = array();'がループの外側にあります。 – William

答えて

1

in_array()メソッドのチェック配列の値であり、キーではありません。私の例では、値としてnamesecondsフィールドの配列があることがわかります。 あなたの配列にそのidが存在するかどうかチェックしたいと思うのですが。

ので、このif$unit['course_name']をキーとして、あなたの配列であるかどうかをチェック

if (!isset($courseList[$unit['course_name']])) { 

この方法:

if (!in_array($unit['course_name'], $courseList)) { 

は、このような変更であるべき。

+0

それは完璧でした!それは私の質問に答えて、もう少しPHPを教えてくれました!歓声メイト! – William