我有一个包含如下所示值的数组
array:2 [▼
0 => "11"
1 => "A_15"
]
如何将其拆分为2个阵列?
//example
array1 store 11
array2 store 15
我使用A_作为指示来确定哪个数组应该存储哪个值。
我尝试了什么
$arr1 = array_filter($myArr, function($v) { return strpos($v, 'A_') === false; });
$arr2 = array_filter($myArr, function($v) { return strpos($v, 'A_') !== false; });
如何通过移除A_ infront来存储值?
或者在不使用循环的情况下更好的方法吗?
答案 0 :(得分:0)
您可以执行以下操作:
$arr = ["A_15","11"];
sort($arr); //Sort the array, which means string starts with letters will go last (A_)
list($arr1, $arr2) = $arr; //Assign the first element to $arr1, 2nd elemnt to $arr2
$arr2 = substr($arr2, 2); //Remove the first 2 characters "A_"
这将导致:
$arr1 = 11
$arr2 = 15
答案 1 :(得分:0)
您还可以使用.splice()方法根据情境逻辑进行拆分:
var array1=[11,15];
var array2=array1.splice(0,1);
OR
var array1=[11,15,1,2,3,4];
var array2=array1.splice(0,3);
在这两种情况下,array2将保存第一部分,array1将具有第二部分。
答案 2 :(得分:0)
要将值拆分为2个数组,可以使用array_map和ltrim从值中删除A_
前缀,然后使用array_chunk将数组块化为阵列。
$myArr = ['11', 'A_15'];
$myArr = array_chunk(array_map(function($x) { return ltrim($x, 'A_');}, $myArr), 1);
list($a1, $a2) = $myArr;
var_dump($a1);
var_dump($a2);
这将为您提供2个阵列:
array(1) {
[0]=>
string(2) "11"
}
array(1) {
[0]=>
string(2) "15"
}