如何在不使用循环的情况下在 PHP 中向多维添加新的键和值......?

Posted

技术标签:

【中文标题】如何在不使用循环的情况下在 PHP 中向多维添加新的键和值......?【英文标题】:how to add new key and value to multidimensional in PHP without using the loops....? 【发布时间】:2019-10-16 03:40:57 【问题描述】:
Array ( [0] => Array (
            [date] => 01-06-2018 
            [nav] => 30.65100 ) 
        [1] => Array ( 
            [date] => 31-05-2018 
            [nav] => 30.84900 ) 
        [2] => Array ( 
            [date] => 30-05-2018 
            [nav] => 30.73200 ) 
        [3] => Array ( 
            [date] => 29-05-2018 
            [nav] => 30.81500 )

上面的代码是Multi-array,我们在其中的每个数组中添加了一个通用的id,比如id_code = 0089,没有使用php中的任何循环。任何人都可以帮助我,这是否可能......?

【问题讨论】:

很清楚,没有循环是不可能的。 谢谢老兄(克里斯·罗弗)。为您提供帮助。 又一个带有“无循环”风格的代码问题,仅供参考,内部总是有一个循环。无论如何使用foreach 有什么问题? 【参考方案1】:

如果您的意思是不手动循环遍历数组,那么可以,可以使用array_walk:

$array = [
0 => [
    "date" => "01-06-2018", 
    "nav" => "30.65100"], 
1 => [ 
    "date" => "01-06-2018", 
    "nav" => "30.65100"], 
2 => [ 
    "date" => "01-06-2018", 
    "nav" => "30.65100"], 
3 => [ 
    "date" =>"01-06-2018", 
    "nav" => "30.65100"]
    ];

array_walk($array, function(&$item1) 
    $item1['id_code'] = "0089";
);

print_r($array);

输出:

Array
(
    [0] => Array
        (
            [date] => 01-06-2018
            [nav] => 30.65100
            [id_code] => 0089
        )

    [1] => Array
        (
            [date] => 01-06-2018
            [nav] => 30.65100
            [id_code] => 0089
        )

    [2] => Array
        (
            [date] => 01-06-2018
            [nav] => 30.65100
            [id_code] => 0089
        )

    [3] => Array
        (
            [date] => 01-06-2018
            [nav] => 30.65100
            [id_code] => 0089
        )

)

演示https://3v4l.org/lCGIO

【讨论】:

我假设 ID 会有所不同,因为所有其他值都不同... @user3153340:已更新,我的代码中的数组中的日期和数字没有被引用,因此它被解释为数字,然后 PHP 执行舍入和计算。感谢您指出。【参考方案2】:

一个有效的解决方案是使用 array_map 函数:

$keyValue = 'some value';

$data = array_map(function($d) use ($keyValue)
    return $d + ['keyName' => $keyValue];
, $data);

【讨论】:

【参考方案3】:

我认为这是您可以得到的更接近的结果,但这可能不是您的预期结果。据我所知,如果不使用循环,您需要的确切结果是无法完成的。

$t = array( 0 => array( 'date' => '01-06-2018', 'nav' => '30.65100' ), 1 => array( 'date' => '31-05-2018', 'nav' => '30.84900' ), 2 => array( 'date' => '30-05-2018', 'nav' => '30.73200' ), 3 => array( 'date' => '29-05-2018', 'nav' => '30.81500' ));
$tt = array( 0 => array( 'id' => '648'), 1 => array( 'id' => '332'), 2 => array( 'id' => '889'), 3 => array( 'id' => '285') );
$final = array_map(null, $t, $tt);
print_r($final);

输出看起来像

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [date] => 01-06-2018
                    [nav] => 30.65100
                )

            [1] => Array
                (
                    [id] => 648
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [date] => 31-05-2018
                    [nav] => 30.84900
                )

            [1] => Array
                (
                    [id] => 332
                )

        )

    [2] => Array
        (
            [0] => Array
                (
                    [date] => 30-05-2018
                    [nav] => 30.73200
                )

            [1] => Array
                (
                    [id] => 889
                )

        )

    [3] => Array
        (
            [0] => Array
                (
                    [date] => 29-05-2018
                    [nav] => 30.81500
                )

            [1] => Array
                (
                    [id] => 285
                )

        )

)

【讨论】:

谢谢,伙计,但我需要为同一个键添加一个值

以上是关于如何在不使用循环的情况下在 PHP 中向多维添加新的键和值......?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不修改 HTML 的情况下在 jQuery 中添加指向伪元素的链接? - 更新 > Functions.php

在不循环多维数组PHP的情况下获取第一个子数组键[重复]

如何在不点击链接的情况下在 javascript 中打开新页面

如何在不默认创建新范围的情况下在 tensorflow 中重用变量范围?

如何在不使用某些框架的情况下在 php 中进行 MVC

如何在foreach循环中向数组添加新索引?