我有一个字符串数组
$cities = ['New York', 'Boston', 'Los Angeles', 'Cincinnati', 'Chicago', 'Houston', 'Philadelphia', 'Dallas', 'Seattle'];
我想检索每个字母开头的所有字符串,先是字母 A,然后是 B,然后是 C,依此类推。
避免无用代码重复的最佳方法是什么?
您可以创建一个以首字母作为索引的临时多维数组。尝试一下 -
$cities = ['New York', 'Boston', 'Los Angeles', 'Cincinnati', 'Chicago', 'Houston', 'Philadelphia', 'Dallas', 'Seattle'];
foreach($cities as $city) {
$first = substr($city, 0, 1);
$temp_cities[$first][] = $city;
}
var_dump($temp_cities);
输出
array(8) {
["N"]=>
array(1) {
[0]=>
string(8) "New York"
}
["B"]=>
array(1) {
[0]=>
string(6) "Boston"
}
["L"]=>
array(1) {
[0]=>
string(11) "Los Angeles"
}
["C"]=>
array(2) {
[0]=>
string(10) "Cincinnati"
[1]=>
string(7) "Chicago"
}
["H"]=>
array(1) {
[0]=>
string(7) "Houston"
}
["P"]=>
array(1) {
[0]=>
string(12) "Philadelphia"
}
["D"]=>
array(1) {
[0]=>
string(6) "Dallas"
}
["S"]=>
array(1) {
[0]=>
string(7) "Seattle"
}
}
要查找以“C”开头的城市,请执行 -
var_dump($temp_cities['C'])
usort($cities, function($a, $b){
return $a <=> $b;
});
请尝试这个
<?php
$cities = ['New York', 'Boston', 'Los Angeles', 'Cincinnati', 'Chicago', 'Houston', 'Philadelphia', 'Dallas', 'Seattle'];
$new_array = [];
$search_string = 'C'; // Letter to search
foreach ($cities as $city) {
if (strpos($city, $search_string) === 0) {
$new_array[] = $city;
}
}
print_r($new_array);// New array will contian list of identified cities
?>
如果我理解正确的话,您正在尝试创建 26 个数组,每个数组对应字母表中的每个字母,每个数组包含以该字母开头的城市。
<?php
$cities = ['New York', 'Boston', 'Los Angeles', 'Cincinnati', 'Chicago', 'Houston', 'Philadelphia', 'Dallas', 'Seattle'];
//Our 26 arrays
$arrA = array();
$arrB = array();
$arrC = array();
$arrD = array();
$arrE = array();
$arrF = array();
$arrG = array();
$arrH = array();
$arrI = array();
$arrJ = array();
$arrK = array();
$arrL = array();
$arrM = array();
$arrN = array();
$arrO = array();
$arrP = array();
$arrQ = array();
$arrR = array();
$arrS = array();
$arrT = array();
$arrU = array();
$arrV = array();
$arrW = array();
$arrX = array();
$arrY = array();
$arrZ = array();
//Fill the array for that city.
foreach ($cities as $city){
$key = substr($city, 0, 1);
${"arr".$key}[] = $city;
}
//Let's just test this worked.
var_dump($arrC);
var_dump($arrB);
var_dump($arrN);
?>
您可以简单地使用
对数组进行排序$cities = ['New York', 'Boston', 'Los Angeles', 'Cincinnati', 'Chicago', 'Houston', 'Philadelphia', 'Dallas', 'Seattle'];
sort($cities);