2015-06-20 44 views
1

我需要從一個數組中填充2個數組,在白名單上進行過濾。 下面是代碼:填充動態關聯數組中的鍵php

foreach($ct_list as $key => $value){ 
    if (in_array($key, $ct_load)){ 
     $ct_options[$key] = $value; 

     if (!is_null ($ct_visible) && in_array($key, $ct_visible)){ 
      $ct_default[] = $value; 
     } 
    } 
} 

第二陣列($ ct_default)是好的。 問題是我期待第一個數組($ ct_options)是像(被濾除在白名單不是「值3」):

Array ( 
    [key1] => value1 
    [key2] => value2 
    [key4] => value4) 

但我得到的是:

Array ( 
    [0] => value1 
    [1] => value2 
    [2] => value4) 

有人可以告訴我什麼是我做錯了嗎?

+0

你可以分享'$ ct_list'數組。例如:'print_r($ ct_list);' –

+0

你的意思是'key3',而不是'value3',在'$ ct_load'中找不到,我猜這是白名單?看起來像'$ ct_list'不是關聯數組。 –

+0

這是print_r($ ct_list)的結果:'Array([houserules] => Aides de jeux [article] => Article [page] => Page de base)' – tibergn

回答

0

您正在檢查$ ct_load,in_array($key, $ct_load)中是否存在$ key,並且在您要求value3進行過濾的代碼下。

<?php 

$array = array("key1" => "value1", "key2" => "value2", "key3" => "value3", "key4" => "value4"); 
$array2 = array("value1", "value2", "value4"); 

foreach($array as $key => $value){ 
    if (in_array($value, $array2)){ 
     $newArray[$key] = $value; 
    } 
} 

echo "<pre>"; 
print_r($newArray); 
echo "</pre>"; 
?> 

輸出:

Array 
(
    [key1] => value1 
    [key2] => value2 
    [key4] => value4 
) 
1

了答案發現,由於正DRU。

我在foreach循環後使用了一個sort($ ct_options)而不是一個asort($ ct_options)。 $ ct_options數組中的值然後丟失了所有索引。

感謝您的幫助。