gpt4 book ai didi

php - 从字符串追加到数组

转载 作者:可可西里 更新时间:2023-10-31 23:03:23 27 4
gpt4 key购买 nike

我有一个名为 $data 的数组,需要使用来自 ajax 调用的数据进行更新。

通过 ajax 调用发送了两个变量(带有示例输入):

部分详细信息:

[111][0][2][0][service_providers][]

服务提供商:

Google

serviceProvider就是数据,sectionDetails就是serviceProvider应该在的数组,在$data数组中。

我需要的是最终为 $data 数组:

$data  =   Array
(
[111] => Array
(
[0] => Array
(
[2] => Array
(
[0] => Array
(
[service_providers] => Array
(
[0] = Google
)
)

)

)

)

)

这样,我可以动态地将数据输入任何单元格,然后我可以更新特定数组(例如 $data[111][0][2][0][service_providers][0] = “雅虎”;

然而,$_POST['sectionDetails'] 是一个字符串,这就是问题所在。

有没有办法将此字符串更改为数组,然后可以将其附加到主 $data 数组(如果同一部分中存在现有值,则更新该值)?

希望这是有道理的。

最佳答案

如果您创建这样的函数:

function setToPath(&$data, $path, $value){
//$temp will take us deeper into the nested path
$temp = &$data;

//notice this preg_split logic is specific to your path syntax
$exploded = preg_split("/\]\[/", rtrim(ltrim($path,"["),"]"));

// Where $path = '[111][0][2][0][service_providers][]';
// $exploded =
// Array
// (
// [0] => 111
// [1] => 0
// [2] => 2
// [3] => 0
// [4] => service_providers
// [5] =>
// )
foreach($exploded as $key) {
if ($key != null) {
$temp = &$temp[$key];
} else if(!is_array($temp)) {
//if there's no key, i.e. '[]' create a new array
$temp = array();
}
}
//if the last index was '[]', this means push into the array
if($key == null) {
array_push($temp,$value);
} else {
$temp = $value;
}
unset($temp);
}

你可以这样使用它:

setToPath($data, $_POST['sectionDetails'], $_POST['serviceProvider']);

print_r($data) 将返回:

Array
(
[111] => Array
(
[0] => Array
(
[2] => Array
(
[0] => Array
(
[service_providers] => Array
(
[0] => Google
)

)

)

)

)

)

关于php - 从字符串追加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com