對不起,令人困惑的標題...call_user_func_array + array_intersect與一個數組名稱的數組,可能嗎?
我需要對可變數目的數組執行array_intersect()
。要做到這一點,看來我需要使用call_user_func_array()
功能,但是,這似乎並沒有被工作,給我的錯誤:
Warning: array_intersect() [function.array-intersect]: Argument #1 is not an array in...
但是,如果我「的print_r」的陣列,以確保那我看到,它是一個數組:
Array ([0] => arr_0 [1] => arr_1)
我的代碼(修剪以只顯示碎部分):
$i = 0;
$arr_results = array();
foreach($arr_words as $word) {
$arrayname = "arr_".$i;
$$arrayname = array();
while ($row = mysql_fetch_assoc($search)) {
array_push($$arrayname, $row['id']);
}
array_push($arr_results, "$arrayname");
$i++
}
$matches = call_user_func_array('array_intersect',$arr_results);
在全碼我與獲得的數據來填充所述陣列中foreach循環FR om sql查詢。
'「$ arrayname」'是一個字符串,而不是一個數組。 'call_user_func_array'會將'$ arr_results'中的每個元素作爲參數傳遞給'array_intersect'。 'array_intersect'需要數組作爲參數,但'$ arr_results'中的每個項都是一個字符串,而不是一個數組。 – 2012-02-26 19:14:00
我拿$ arrayname並把它變成一個數組,我剛剛更新了代碼片段以顯示這一點。 – 2012-02-26 19:15:52
如果這是真的,'print_r'會顯示一個嵌套數組作爲輸出,但它顯示一個字符串數組。爲什麼認爲'「$ arrayname」'成爲一個數組?哪裏? *編輯:*'array_push($ arr_results,「$ arrayname」);'向數組添加一個字符串。 PHP不評估字符串。現在並不是'$ arrayname'中的值引用變量名稱。爲什麼不從一開始就創建一個數組數組?這比變量變量更容易處理。 – 2012-02-26 19:17:23