从数组中为每个循环构建简单的PHP

时间:2017-09-26 15:39:58

标签: php foreach

我有一个名为$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);    
}

4 个答案:

答案 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);