我有一个名为$user_ids
的数组,打印为:
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);
}
答案 0 :(得分:2)
在PHP> = 7.0.0中,您可以使用user_id
从对象中提取所有array_column
:
foreach(array_column($user_ids, 'user_id') as $user_N) {
send_msg($user_N, $body_input, $subject_input);
}
答案 1 :(得分:1)
<?php
// You're looping over objects; not user IDs
foreach ($user_ids as $obj){
send_msg( $obj->user_id, $body_input, $subject_input);
}
?>
答案 2 :(得分:1)
你有一个包含对象的数组。要在循环中获取ID,必须使用$user_N->user_id
,因此请将循环更改为:
foreach ($user_ids as $user_N){
send_msg( $user_N->user_id, $body_input, $subject_input);
}
答案 3 :(得分:-1)
看起来你将JSON转换为ARRAY而没有将第二个参数传递给true,这就是你有对象数组的原因。
http://php.net/manual/en/function.json-decode.php
在这种情况下,您可以
send_msg( $user_N->user_id, $body_input, $subject_input);
但是如果你将JSON转换为关联数组(通过将第二个参数传递给 true ),那么你可以做到
send_msg( $user_N['user_id'], $body_input, $subject_input);