2017-06-29 89 views
0

我有一個$檢查陣列,看起來是這樣的:在的foreach檢查通過這個數組in_array PHP

array(2) { 
    [0]=> 
    array(1) { 
    ["id_kategorii"]=> 
    string(1) "2" 
    } 
    [1]=> 
    array(1) { 
    ["id_kategorii"]=> 
    string(1) "4" 
    } 
} 

$類別排列的樣子:

array(2) { 
    ["id"]=> 
    string(2) "14" 
    ["nazwa"]=> 
    string(3) "123" 
} 
array(2) { 
    ["id"]=> 
    string(1) "8" 
    ["nazwa"]=> 
    string(5) "ajaja" 
} 
array(2) { 
    ["id"]=> 
    string(1) "4" 
    ["nazwa"]=> 
    string(23) "ale nie no kurde w dupe" 
} 

等......但它不是像數組('1','2','3')那樣的典型數組;但是它不是像數組一樣的典型數組。 所以我覺得,因爲它的這個不工作,但我不知道......

而且我有PHP代碼:

foreach($categories as $category) 
      { 
       $final .= '<tr>'; 

       if(in_array($category['id'], $checked)) 
       { 
        $final .= '<td>'.form_checkbox(array('name' => 'categories[]', 'value' => $category['id'], 'checked' => 'checked')).'</td>'; 
       } 
       else 
       { 
        $final .= '<td>'.form_checkbox(array('name' => 'categories[]', 'value' => $category['id'])).'</td>'; 
       } 

但它總是帶有別的,in_array永不熄滅真正。

它應該去類別真[「身份證」]當它是2和4

爲什麼沒有這個in_array正常工作?

+0

你需要使用checked array。使用'array_column()'你可以創建一個新的數組,然後'in_array()'將正常工作 –

+0

你是什麼意思我必須使用? –

+0

@FrayneKonok我不明白你的觀點或想法,爲什麼要創建新列? –

回答

1

您需要使用array_column()函數重新校驗陣列。

$checked = array(array('id_kategorii' => '2'), array('id_kategorii' => '4')); 
$new_checked = array_column($checked, 'id_kategorii'); 
print_r($new_checked); 

然後使用$new_checked陣列在in_array()