【问题标题】:Push key value in empty array using php使用php在空数组中推送键值
【发布时间】:2020-02-02 15:13:46
【问题描述】:

我有关联数组和与该键相关的值包含 json_encoded 数据,因此我将其转换并生成数组,我使用 array_walk 迭代每个数组值而不是使用 foreach 循环打印值但同时我想推送(键和值)在外部声明的空数组中,但它没有插入任何值。

注意:这里$result是关联数组,它的键包含json数据的值,我不想使用嵌套的foreach循环所以使用array_walk()

$new_array=array();

array_walk($result, function(&$a, &$key) use($i) {

    $var = '';
    foreach (json_decode($a) as $row_key => $row_value) {

        if ($row_key == 'abc') {
            $new_array[$row_key][] = array(    // push key,value in $new_array
                $row_key => $row_value,
            );
        } else {

           echo $row_key . " : " . $row_value ;
        }
    }
});

【问题讨论】:

    标签: php arrays multidimensional-array array-push array-walk


    【解决方案1】:

    参考使用$new_array

    array_walk($result, function(&$a, &$key) use($i, &$new_array) {
    

    另外,我认为通过引用传递 $a$key 没有任何意义。也许,您向我们展示的不是完整的代码,并且通过引用传递 $a$key 是有意义的,但目前,您甚至没有在代码中使用 $key

    那么通过它的目的是什么?

    // probably:
    array_walk($result, function($a) use($i, &$new_array) {
    

    【讨论】:

    • 非常感谢你救了我,伟大的工作,你能告诉我为什么 $new_array 应该通过引用传递
    • 引用传递意味着变量的原始值会被改变。这正是您所需要的 - 更改原始值。相反 - 传递 按值 只是传递值而不改变原始值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    相关资源
    最近更新 更多