2017-09-26 64 views
0

循環我有一個名爲$user_ids一個數組,打印爲:構建簡單的PHP的for-each從陣列

Array ([0] => stdClass Object ([user_id] => 1) [1] => stdClass Object ([user_id] => 2)) 

我想執行send_msg數組中的每一個user_id。在上面的例子中,我想達到這個相當於:

send_msg(1, $body_input, $subject_input); 
send_msg(2, $body_input, $subject_input); 

這是我所嘗試過的,但它不起作用。

foreach ($user_ids as $user_N){ 
send_msg($user_N, $body_input, $subject_input);  
} 

回答

2

在PHP> = 7.0.0可以從對象與array_column提取所有user_id S的:

foreach(array_column($user_ids, 'user_id') as $user_N) { 
    send_msg($user_N, $body_input, $subject_input);  
} 
1
<?php 
// You're looping over objects; not user IDs 
foreach ($user_ids as $obj){ 
    send_msg($obj->user_id, $body_input, $subject_input);  
} 
?> 
1

你有對象的數組。爲了讓在循環的ID,您必須使用$user_N->user_id所以你的循環更改爲:

foreach ($user_ids as $user_N){ 
    send_msg($user_N->user_id, $body_input, $subject_input);  
} 
-1

看起來像您將JSON轉換爲ARRAY而不將第二個參數傳遞給true,這就是爲什麼您有對象數組的原因。

http://php.net/manual/en/function.json-decode.php

在這種情況下,你可以做

send_msg($user_N->user_id, $body_input, $subject_input); 

但如果你轉換JSON到相關的陣列(通過傳遞第二個參數去真正),那麼你可以做

send_msg($user_N['user_id'], $body_input, $subject_input);