Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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_Multidimensional Array - Fatal编程技术网

Php 向多维数组添加另一个值

Php 向多维数组添加另一个值,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这样一个数组: $total= [20140124] => Array ( [abc] => 0.19287878787879 [total] => 38 [revenue] => 1232 [clicks] => 1110 [score]=>100 ) [20140123] => Array ( [abc] => 0.

我有这样一个数组:

  $total= [20140124] => Array
    (
        [abc] => 0.19287878787879
        [total] => 38
        [revenue] => 1232
        [clicks] => 1110
        [score]=>100
    )

[20140123] => Array
    (
        [abc] => 0.32898148148148
        [total] => 28
        [revenue] => 1142
        [clicks] => 1022
        [score]=>200
    )
现在,我正在准备另一个阵列,并检查以下一些条件:

foreach($total as $t){
    $new_array[] = array(
       "total"=>$t->abc;
       "another_value"=>$t->revenue/$t->clicks;
    );
    if(some_condition){
        $new_array[] = array("total_score"=>$t->clicks+$t->score); 
    }
}
我需要的是一个类似

$new_array = 

[0] => Array
        (
            [total] => total_value
            [another_value] => anopther_value
            [total_score] => total_score_value

        )

    [1] => Array
        (
            [total] => total_value
            [another_value] => anopther_value
            [total_score] => total_score_value
        )
)
但是我没有把总的分数插入到第0个索引中。相反,整个数组将替换为if条件中的值。我怎样才能用其他指标也得到总分呢?

试试这个:

foreach($total as $t){
    $array_element = array();
    $array_element["total"] = $t["abc"];
    $array_element["another_value"] = $t["revenue"] / $t["clicks"];
    );
    if(some_condition){
        $array_element["total_score"] = $t["clicks"] + $t["score"]; 
    }
    $new_array[] = $array_element;
}
在代码中,您将向
$new\u数组添加一个元素,然后检查该条件。因此,您正在添加下一个元素,但不编辑第一个元素,您可以尝试:

foreach($total as $t){
    $data = array(
       'total'         => $t['abc'],
       'another_value' => $t['revenue'] / $t['clicks']
    );

    if(some_condition){
        $data['total_score'] = $t['clicks'] + $t['score']; 
    }
    $new_array[] = $data;
}

它不会被插入到第0个索引中,因为您正在使用$new\u array[],它在每次调用时都会创建一个新索引。通过增加循环中的计数器或每次迭代调用一次,可以使用固定索引。您的计数器解决方案如下所示:

$count = 0;    
foreach($total as $t){
    $new_array[$count] = array(
       "total"=>$t->abc;
       "another_value"=>$t->revenue/$t->clicks;
    );
    if(some_condition){
        $new_array[$count] = array("total_score"=>$t->clicks+$t->score); 
    }
    $count++;
}

为什么在数组上使用对象表示法($t->abc)?哈……无论如何,这是一个错误,实际上两个答案是相同的。因此,我接受第一个。:)谢谢你@k102使用的
->
在此处不正确。您正在循环数组,而不是对象,因此必须使用
$array['key']`调用数组
s元素@好的。。。羞愧me@k102实际上是我的错误,我使用了'->'作为数组。不知怎么的,它出现在我的脑海里,所以我就用了它。无论如何,当我使用k102解决方案时,我纠正了它并使用了数组。