我无法弄清楚如何从Laravel PHP框架返回给我的数组中获取某个值。我想遍历这个变量(称为$user_ids
)并获取每个元素的值,如下所示:
$sql = '(';
$limit = count($user_ids);
for ($i = 0; $i < $limit; $i++) {
if ($i == $limit ) {
$sql .= '"' . $user_ids[$i] . '")';
} else {
$sql .= '"' . $user_ids[$i] . '", ';
}
}
我一直收到错误:Object of class stdClass could not be converted to string
。
以下是print_r($user_ids)
的输出:
Array ( [0] => stdClass Object ( [id] => 5 ) [1] => stdClass Object ( [id] => 6 ) [2] => stdClass Object ( [id] => 4 ) [3] => stdClass Object ( [id] => 7 ) [4] => stdClass Object ( [id] => 3 ) )
var_dump($user_ids)
的输出:
array(5) { [0]=> object(stdClass)#201 (1) { ["id"]=> string(1) "5" } [1]=> object(stdClass)#205 (1) { ["id"]=> string(1) "6" } [2]=> object(stdClass)#204 (1) { ["id"]=> string(1) "4" } [3]=> object(stdClass)#206 (1) { ["id"]=> string(1) "7" } [4]=> object(stdClass)#207 (1) { ["id"]=> string(1) "3" } }
我确信这很简单,但我只是PHP的新手。
谢谢,
答案 0 :(得分:2)
只需用逗号粘贴数组元素并用大括号包装:
// converting object with id param to array of ids
$user_ids = array_map(function($user) {
return (int)$user->id;
}, $user_ids);
// joining user_ids with comma
$query = (sizeof($user_ids) > 0)? '('.implode(', ', $user_ids).')' : '';
答案 1 :(得分:1)
asef和jetawe的答案都有帮助,所以我投票给他们,但我找到了两个解决方案。我更喜欢第一个,因为它不需要创建临时变量($ tmp):
$sql = '(';
$counter = 0;
$limit = count($user_ids)-1;
foreach ($user_ids as $item) {
if ($counter == $limit ) {
$sql .= '"' . $item->id . '")';
} else {
$sql .= '"' . $item->id . '", ';
}
$counter++;
}
但这也有效:
$sql = '(';
$limit = count($user_ids)-1;
for ($i = 0; $i <= $limit; $i++) {
$tmp = (array)$user_ids[$i];
if ($i == $limit ) {
$sql .= '"' . $tmp['id'] . '")';
} else {
$sql .= '"' . $tmp['id'] . '", ';
}
}