我有以下字符串:“1,3,4,7”,我需要将其分解为以下格式的数组:
$data = array(
array(
'id' => 1
),
array(
'id' => 3
),
array(
'id' => 4
),
array(
'id' => 7
),
);
这似乎给我带来的痛苦比我想象的要多得多。有人可以帮忙吗?
array_map()
和 explode()
的组合:首先使用这些值创建一个数组,然后将所有这些值映射到新数组中所需的格式。
类似:
$vals = "1,3,4,7";
$map = array_map(function($val) {
return array('id' => $val);
}, explode(',', $vals));
var_dump($map);
一个例子.
<?php
$myArray=explode(",","1,3,5,7");
$result=array();
foreach($myArray as $key=>$arr)
{
$result[$key]['id']=$arr;
}
print_r($result);
?>
首先分解字符串以获取数组中的值。然后迭代数组并将数据作为数组设置到另一个数组
$string = "1,2,3,4";
$array = explode(",", $string);
$data = array();
foreach($array as $arr){
$data[] = array('id' => $arr);
}
这是一种跳出框框思考的技术,不需要循环或迭代函数调用。
形成具有所需结构的有效查询字符串并解析它。 空的
[]
语法将自动生成索引。
代码:(演示)
$vals = "1,3,4,7";
$queryString = 'a[][id]=' . str_replace(',', '&a[][id]=', $vals);
parse_str($queryString, $output);
var_export($output['a']);
其他方法:
无主体 foreach:演示
$result = [];
foreach (explode(',', $vals) as $result[]['id']);
var_export($result);
或者在
array_map()
回调中通过参数名称指定列键。 演示
var_export(
array_map(
fn($id) => get_defined_vars(),
explode(',', $vals)
)
);
输出(来自以上):
array (
0 =>
array (
'id' => '1',
),
1 =>
array (
'id' => '3',
),
2 =>
array (
'id' => '4',
),
3 =>
array (
'id' => '7',
),
)