我做了如下编码,得到了错误的输出:
$asst_vicars_data_arr=explode(',',$asst_vicars_data);
$asst_head_type_count=count($asst_vicars_data_arr);
$d = explode("|",$data);
foreach ($asst_vicars_data_arr as $value) {
$arr = explode("|",$value);
print_r($arr);
}
输入:
$asst_vicars_data_arr=Array ( [0] => PT|1 [1] => O|4 [2] => PT|15,... )
预期输出:
$type=Array([0] => PT, [1] => O,...)
$heads=Array([0] => 1, [1] => 4,...)
如何创建这两个数组?
3条答案
按热度按时间fsi0uk1n1#
你可以试试这个
Fiddle
qni6mghb2#
我希望这能帮助你,这里我用
explode
来打破一个字符串和foreach
循环。Try this code snippet here
zpgglvta3#
这个问题的核心是一个字符串到数组的转换练习。与其做一大堆
explode()
的工作,不如让我们研究几个方法,这些方法将执行更少的迭代函数调用...方法#1:使用
preg_match()
和数组解构的一行程序:方法#2:3-使用
preg_split()
、array_chunk()
和array_column()
的衬管我的第一个方法使用lean regex模式来提取
list()
容易设置为变量的值。list()
的前导逗号意味着$m
的第一个子数组(完整的字符串)不会被分配变量名。我的第二个方法使用lean regex模式,在同一步骤中分解竖线和逗号上的字符串。
array_chunk()
将元素成对放置。最后array_column()
获得数组中的“vertical”值。本页上的所有其他答案都是在每次迭代中使用
explode()
调用。随着输入大小的增加,这种方法的效率越来越低。因此,执行一次所有分解/拆分并从那里继续进行会更有效率。方法1显然是我最喜欢的方法;我只想展示方法#2作为一种替代方法,它也在处理片段之前解剖字符串一次。
下面是一些其他方法,它们的行为类似于其他答案中的foreach循环(它们也有同样的低效率问题,因为它们在每次迭代时都调用
explode()
):array_map()
可以用来编写一行代码:array_walk()
的情况与此相同,但多了一行代码: