如何在不使用循环的情况下在 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
如何在不点击链接的情况下在 javascript 中打开新页面