Php 如何从数组中较大的字符串中选取一个字符串,并使用名称对其进行分组?
我有一个php脚本数组Php 如何从数组中较大的字符串中选取一个字符串,并使用名称对其进行分组?,php,Php,我有一个php脚本数组 $carstable = array( "tbl_Volvo_01_05_16", "tbl_Volvo_02_05_16", "tbl_Volvo_03_05_16", "tbl_Volvo_04_05_16", "tbl_BMW_01_05_16", "tbl_BMW_02_05_16", "tbl_BMW_03_05_16", "tbl_BMW_04_05_16", "tbl_Toyota_0
$carstable = array(
"tbl_Volvo_01_05_16",
"tbl_Volvo_02_05_16",
"tbl_Volvo_03_05_16",
"tbl_Volvo_04_05_16",
"tbl_BMW_01_05_16",
"tbl_BMW_02_05_16",
"tbl_BMW_03_05_16",
"tbl_BMW_04_05_16",
"tbl_Toyota_01_05_16",
"tbl_Toyota_02_05_16",
"tbl_Toyota_03_05_16",
"tbl_Toyota_04_05_16");
这个数组是由系统生成的。我想从中得到另一个数组,它只包含上面数组中提到的汽车列表。
我希望该数组类似于:
$cars =array("Volvo","BMW","Toyota");
使用foreach并使用
分解值
,并将其存储到最终数组中。现在应用array_unique以获得唯一的数组值
$carstable = array(
"tbl_Volvo_01_05_16",
"tbl_Volvo_02_05_16",
"tbl_Volvo_03_05_16",
"tbl_Volvo_04_05_16",
"tbl_BMW_01_05_16",
"tbl_BMW_02_05_16",
"tbl_BMW_03_05_16",
"tbl_BMW_04_05_16",
"tbl_Toyota_01_05_16",
"tbl_Toyota_02_05_16",
"tbl_Toyota_03_05_16",
"tbl_Toyota_04_05_16"
);
$final = array();
foreach($carstable as $val){
$tmp = explode("_", $val);
$final[] = $tmp[1];
}
echo '<pre>';
print_r(array_values(array_unique($final)));
您可能需要执行以下操作:
<?php
$carstable = array(
"tbl_Volvo_01_05_16",
"tbl_Volvo_02_05_16",
"tbl_Volvo_03_05_16",
"tbl_Volvo_04_05_16",
"tbl_BMW_01_05_16",
"tbl_BMW_02_05_16",
"tbl_BMW_03_05_16",
"tbl_BMW_04_05_16",
"tbl_Toyota_01_05_16",
"tbl_Toyota_02_05_16",
"tbl_Toyota_03_05_16",
"tbl_Toyota_04_05_16");
$newArray = array();
foreach ($carstable as $value) {
$carArray = explode('_',$value);
if (isset($carArray[1])) {
$newArray[] = $carArray[1];
}
}
print_r(array_unique($newArray));
在数组中循环并用“\ux”将其分解
一个简短的片段,也适用于阿尔法·罗密欧
Array
(
[0] => Volvo
[1] => BMW
[2] => Toyota
[3] => Alfa_Romeo
)
将导致:
<?php
$carstable = array(
"tbl_Volvo_01_05_16",
"tbl_Volvo_02_05_16",
"tbl_Volvo_03_05_16",
"tbl_Volvo_04_05_16",
"tbl_BMW_01_05_16",
"tbl_BMW_02_05_16",
"tbl_BMW_03_05_16",
"tbl_BMW_04_05_16",
"tbl_Toyota_01_05_16",
"tbl_Toyota_02_05_16",
"tbl_Toyota_03_05_16",
"tbl_Toyota_04_05_16"
);
$cars = array_map(function($v){
preg_match("/tbl_([^_]+)/", $v, $t);
return $t[1];
}, $carstable);
$cars = array_unique($cars);
var_dump($cars);
另一种使用array\u map
和array\u unique
和preg\u match
支持不同字符串结构的方法:
array(3) {
[0]=>
string(5) "Volvo"
[4]=>
string(3) "BMW"
[8]=>
string(6) "Toyota"
}
只有汽车名称和唯一的数组值…Alfa_Romeo
btw会发生什么?对不起,我没听清楚。@u_mulder看到我的答案。@u_mulder,OP的问题在哪里?@FrayneKonok u_muler在另一个答案的评论中提到。天真地向每一个吐痰对这样的品牌不起作用。
Array
(
[0] => Volvo
[1] => BMW
[2] => Toyota
[3] => Alfa_Romeo
)
<?php
$carstable = array(
"tbl_Volvo_01_05_16",
"tbl_Volvo_02_05_16",
"tbl_Volvo_03_05_16",
"tbl_Volvo_04_05_16",
"tbl_BMW_01_05_16",
"tbl_BMW_02_05_16",
"tbl_BMW_03_05_16",
"tbl_BMW_04_05_16",
"tbl_Toyota_01_05_16",
"tbl_Toyota_02_05_16",
"tbl_Toyota_03_05_16",
"tbl_Toyota_04_05_16"
);
$cars = array_map(function($v){
preg_match("/tbl_([^_]+)/", $v, $t);
return $t[1];
}, $carstable);
$cars = array_unique($cars);
var_dump($cars);
array(3) {
[0]=>
string(5) "Volvo"
[4]=>
string(3) "BMW"
[8]=>
string(6) "Toyota"
}