Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 值未正确插入数组_Php_Arrays - Fatal编程技术网

Php 值未正确插入数组

Php 值未正确插入数组,php,arrays,Php,Arrays,将$name[$init]的值正确地插入到$val['dsf']下的键dsf中是正确的,但它仅惰性化了$val['customProduct']['dsf']下dsf中的最后一个值 $name = array(0=>'Amit',1=>'Amit1',2=>'Amit2'); foreach($order->orderLines as $init =>$val){ $val['dsf'] = $name[$init]; $val['c

将$name[$init]的值正确地插入到$val['dsf']下的键dsf中是正确的,但它仅惰性化了$val['customProduct']['dsf']下dsf中的最后一个值

$name = array(0=>'Amit',1=>'Amit1',2=>'Amit2');
foreach($order->orderLines as $init =>$val){
        $val['dsf'] = $name[$init];
        $val['customProduct']['dsf'] = $name[$init];
}

您需要
$val
按引用传递:

$name = array(0=>'Amit',1=>'Amit1',2=>'Amit2');
$orderLines = array(
    array(
        'dsf' => array(),
        'customProduct' => array()
    ),
    array(
        'dsf' => array(),
        'customProduct' => array()
    ),
    array(
        'dsf' => array(),
        'customProduct' => array()
    ),
);
foreach($orderLines as $init => &$val){ //edit here
    $val['dsf']= $name[$init];
    $val['customProduct']['dsf'] = $name[$init];
}

print_r($orderLines);
输出:

Array
(
    [0] => Array
        (
            [dsf] => Amit
            [customProduct] => Array
                (
                    [dsf] => Amit
                )

        )

    [1] => Array
        (
            [dsf] => Amit1
            [customProduct] => Array
                (
                    [dsf] => Amit1
                )

        )

    [2] => Array
        (
            [dsf] => Amit2
            [customProduct] => Array
                (
                    [dsf] => Amit2
                )

        )

)

请尝试一下,如果您有任何疑问,请发表评论,我很乐意回答

<?php

$name = array(0=>'Amit',1=>'Amit1',2=>'Amit2');


$orderLines = array(
    array(
        "id"=>1,
        "order_id"=>10,
        "dfs"=>0,
        "customProduct"=>array(
            "id"=>102,
            "order_id"=>10,
            "dfs"=>0,
            "name"=>""
        )
    ),
    array(
        "id"=>2,
        "order_id"=>20,
        "dfs"=>1,
        "customProduct"=>array(
            "id"=>105,
            "order_id"=>20,
            "dfs"=>1,
            "name"=>""
        )
    ),
    array(
        "id"=>3,
        "order_id"=>50,
        "dfs"=>2,
        "customProduct"=>array(
            "id"=>107,
            "order_id"=>50,
            "dfs"=>2,
            "name"=>""
        )
    )
);

$orderLinestemp = array();
foreach($name as $value){
    
    $temp_array = array("dfs"=>$value,"customProduct"=>array("name"=>$value));
    array_push($orderLinestemp, $temp_array);
}

$orderLines=array_replace_recursive($orderLines,$orderLinestemp);

echo "<pre/>";

print_r($orderLines);

?>

输出


$val['customProduct']['dsf']=$name[$init];始终指定给数组中的同一指针。这意味着$name[$init]中的最后一个值将始终覆盖以前的值任何解决方案都无法实现这一点?您试图实现什么请参见下面的答案@dmitry我尝试实现相同的目标,但它对我不起作用。您能解释一下$orderLines是预生成的还是基于$name数组生成的吗。在正常情况下,它似乎是正确的和工作。但不知道为什么不为我工作。它不工作,因为订单行数组已经有了一些值。这不是一个空的数组。你可以给我一个预生成的数组的样本,这样我就可以帮助你,而实际问题是什么?是的,确定。这是一个laravel生成的对象数组,很抱歉,以前编辑的答案也不起作用,我再次更改它,请现在检查。@AmitSharma,你能检查它吗?你能确认它是否起作用吗?所以我更改,请尝试其他方法来解决你的问题