PHP-Foreach会回显这些值,但不会将其推送到数组中
我有一个数组$x,看起来像这样:PHP-Foreach会回显这些值,但不会将其推送到数组中,php,arrays,foreach,Php,Arrays,Foreach,我有一个数组$x,看起来像这样: Array ( [0] => Array ( [Id] => 280123736 [BuyItNowPrice] => 600 [SellerId] => 3635925 ) [1] => Array ( [Id] => 280195277 [SellerId] => 4269145 ) [2] =>
Array
(
[0] => Array
(
[Id] => 280123736
[BuyItNowPrice] => 600
[SellerId] => 3635925
)
[1] => Array
(
[Id] => 280195277
[SellerId] => 4269145
)
[2] => Array
(
[Id] => 280195291
[SellerId] => 4269145
)
)
现在,我想将键为“Id”的所有值推送到一个新数组中,但我无法让它工作。我有一个递归遍历数组的函数,如下所示:
$ids = array();
function get_ids($arr) {
if ($arr) {
foreach ($arr as $key => $value) {
if (is_array($value)) {
get_ids($value);
} else {
if ($key == "Id") {
//None of these seem to work
//Tried them both separately of course
$ids[] = $value;
array_push($ids, $value);
//But printing out the values does work
echo "[". $key ."]: " . $value . "\n";
}
}
}
}
}
我这样调用函数:
echo "--Call get_ids() \n";
get_ids($x);
echo "--Print $ids \n";
print_r($ids);
echo "--Print $ids length \n";
count($ids);
其输出为:
--Call get_ids()
[Id]: 280123736
[Id]: 280195277
[Id]: 280195291
--Print $ids
Array
(
)
--Print $ids length
(No output here..)
I console.log使用javascript通过AJAX调用php脚本来记录结果,如果这很重要,例如:
$.ajax ({
url: "script.php",
success: function(result) {
console.log(result);
}
});
但是,我需要在php脚本中提取“id”。有什么建议吗?只需使用此命令将所有
Id
放入一个数组:
$ids = array_column($x, 'Id');
至于foreach
方法,它也简单得多:
foreach($x as $value) {
if(isset($value['Id'])) {
$ids[] = $value['Id'];
}
}
为什么不仅仅是:
$ids=array_column($x,'Id')哇,那很容易。非常感谢。我在哪里把你的答案标记为已解决?可能是重复的,但我只是以防万一。只是好奇而已。为什么我的代码不起作用?我不知道,它太复杂了,但是我会添加一个foreach,这样你就会觉得它很简单。