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

Php 编辑多个数组值(如果存在)

Php 编辑多个数组值(如果存在),php,arrays,editing,Php,Arrays,Editing,伙计们,我已经为此挣扎了大约5个小时,我意识到我的大脑被炸了,我想我最好找一些知道他们在做什么的人:p现在我只需要正确地解释这个问题 我想在每个单独的进球后显示所有进球得分者的姓名和进球时间,如: 卡尔顿·迪克森(23,53岁)丹尼尔·塔克尔(1岁) 我能想到的唯一方法是用一个新的数组替换数组,该数组包含元素中的所有目标。所以,把名字排成一行,把所有目标排成一行。也许我看得不对 干杯,伙计们 array(8) { [0]=> array(3) {

伙计们,我已经为此挣扎了大约5个小时,我意识到我的大脑被炸了,我想我最好找一些知道他们在做什么的人:p现在我只需要正确地解释这个问题

我想在每个单独的进球后显示所有进球得分者的姓名和进球时间,如: 卡尔顿·迪克森(23,53岁)丹尼尔·塔克尔(1岁)

我能想到的唯一方法是用一个新的数组替换数组,该数组包含元素中的所有目标。所以,把名字排成一行,把所有目标排成一行。也许我看得不对

干杯,伙计们

array(8) {   

    [0]=>   array(3) {  

         ["fname"]=>
         string(7) "Carlton"
         ["sname"]=>
         string(7) "Dickson"
         ["time"]=>
         string(2) "23"   
    }   

    [1]=>   array(3) {

         ["fname"]=>
         string(7) "Carlton"
         ["sname"]=>
         string(7) "Dickson"
         ["time"]=>
         string(2) "53"  
    }  

    [2]=>   array(3) {

         ["fname"]=>
         string(6) "Daniel"
         ["sname"]=>
         string(6) "Tasker"
         ["time"]=>
         string(1) "1"   
    }   

您可以通过以下方式重建阵列:

$newArray = array();

foreach($array as $player) {
    $name = $player['fname'] . " " . $player["sname"];
    if(!array_key_exists($name, $newArray)) {
        $newArray[$name] = array();
    }
    $newArray[$name][] = $player['time'];
}
生成的数组将是:

Array
(
    [Carlton Dickson] => Array
        (
            [0] => 23
            [1] => 53
        )

    [Daniel Tasker] => Array
        (
            [0] => 1
        )

)
i、 键是名称,值是目标数组。当然,您也可以将目标连接为字符串,这取决于您还想对数据做什么

然后,打印只需遍历阵列即可:

foreach($newArray as $player => $goals) {
    echo $player . " (" . implode(',', $goals) . ") <br />"; // or PHP_EOL
}
foreach($newArray作为$player=>$goals){
echo$player.“(”.introde(“,”,$goals)。”
“;//或PHP_EOL }
假设您有一个
$goals
数组,如下所示:

$goals = array(
    array('fname' => 'Carlton', 'sname' => 'Dickson', 'time' => '23'),
    array('fname' => 'Carlton', 'sname' => 'Dickson', 'time' => '53'),
    array('fname' => 'Daniel',  'sname' => 'Tasker',  'time' => '1')
);

您能更详细地说明所需的输入和输出是什么吗?:)哥们,你是个天才,我没想过用名字作为钥匙。Dam it man:)这太简单了,只需将所有时间添加到数组中,而不是编辑当前时间。非常感谢,有点烦人你花了我几个小时才做完的事:)为检查干杯,还有疯狂的杂耍演员。@Jamie Hubber:欢迎你。是的,使用数据作为密钥可以使一些事情变得非常简单。如果您以动态方式构建阵列,那么您可以从一开始就以这种方式构建阵列。。。快乐编码@Felix我看到了您以前的答案,您使用+作为连接运算符。太多蟒蛇了,嗯?哈哈,我输入了比赛的数据,其中一部分是每个进球的数据。我已经从数据库中获取了所有这些,所以这只是一个缩减的例子。@NullUserException ha ye也注意到了这一点。是的,当然不是:)无论如何,你不可能有超过11个得分手。“老实说,我不知道stack overflow的每个人都这么乐于助人。”@Felix Nope。如果我使用串联,它将不会完全正常工作;除非我加上几行代码。啊,对不起,我被你用三元运算符的表达式搞糊涂了。。。狡猾的;)
$goals = array(
    array('fname' => 'Carlton', 'sname' => 'Dickson', 'time' => '23'),
    array('fname' => 'Carlton', 'sname' => 'Dickson', 'time' => '53'),
    array('fname' => 'Daniel',  'sname' => 'Tasker',  'time' => '1')
);