Php 以字符开头的数组键
我有一个包含术语和定义的数组:Php 以字符开头的数组键,php,Php,我有一个包含术语和定义的数组: $myArray = array("apple" => "Fruit that grows ...", "car" => "Vehicle on four..."); 如何确定在$myArray中是否有以特定字母开头的单词,比如说“c”代表car,并在通过循环生成的ABC列表中的相应字母中添加一个类: foreach(range('A','Z') as $i) { echo '<div>'. $i .'</div>
$myArray = array("apple" => "Fruit that grows ...", "car" => "Vehicle on four...");
如何确定在$myArray中是否有以特定字母开头的单词,比如说“c”代表car,并在通过循环生成的ABC列表中的相应字母中添加一个类:
foreach(range('A','Z') as $i) {
echo '<div>'. $i .'</div>';
}
foreach(范围('A','Z')为$i){
回音“.$i.”;
}
更新:
预期产出:
<div class="match">A</div>
<div>B</div>
<div class="match">C</div>
A
B
C
$myArray=array('a'=>'狗','b'=>'猫');
//从A到Z的每个字母,包含在$i中
foreach(范围('A','Z')为$i){
回显“.$i”。
;//输出字母
//对于数组的每个键/值对
foreach($myArray作为$key=>$element){
//如果密钥的第一个字母是该字母,则它匹配
//这匹配大小写
if(在数组中($key[0],数组($i,strtolower($i))){
回显'.$element'
';
}
}
回声“
”;
}
循环通过A-Z并检查每个键/值对,以查看键是否以该字母开头(或其小写对应项;同时检查A和A)
编辑:根据问题更新进行更新您需要比较即将输出的字符是否作为数组键中的第一个字符存在。与所有其他正在工作的解决方案相比,这些解决方案一遍又一遍地迭代整个数据阵列,只需做一点准备,就会更容易理解所发生的事情
$myArray = array("apple" => "Fruit that grows ...", "car" => "Vehicle on four...", "cat" => "Meow");
// Prepare array keys
$keys = array_keys($myArray);
array_walk($keys, function(&$key){$key=mb_strtoupper(mb_substr($key,0,1));});
array_unique($keys);
foreach (range('A','Z') as $char) {
if (in_array($char, $keys)) {
echo "<div class='match'>".$char."</div>";
} else {
echo "<div>".$char."</div>";
}
}
$myArray=array(“苹果”=>“生长的果实…”,“汽车”=>“四轮马车…”,“猫”=>“喵喵”);
//准备数组键
$keys=array\U keys($myArray);
数组_walk($keys,function(&$key){$key=mbstrtoupper(mb_substr($key,0,1));};
数组_唯一($key);
foreach(范围('A','Z')为$char){
if(在数组中($char,$keys)){
回显“$char.”;
}否则{
回显“$char.”;
}
}
输出:
<div class='match'>A</div><div>B</div><div class='match'>C</div><div>D</div><div>E</div><div>F</div> ...
ABCDEF。。。
给猫剥皮的方法很多。这里有一个:
$matches = preg_grep('/^[A-Z]/', array_keys($myArray));
foreach($matches as $i) {
echo '<div>'. $i .'</div>';
}
$matches=preg_grep('/^[A-Z]/',数组键($myArray));
foreach($匹配为$i){
回音“.$i.”;
}
那个是区分大小写的。要匹配A-Z和A-Z,请将i修饰符添加到正则表达式中。尝试:
$arr = array("apple" => "Fruit that grows ...", "car" => "Vehicle on four...");
foreach ($arr as $k => $v) {
foreach(range('a','z') as $i ) {
if (strpos($k, $i) === 0)
echo "<div class='match'>". $i .'</div>';
else
echo '<div>'. $i .'</div>';
}
}
$arr=array(“苹果”=>“生长的果实…”,“汽车”=>“四辆车…”);
foreach($arr为$k=>$v){
foreach(范围('a','z')为$i){
if(strpos($k,$i)==0)
回显“$i”;
其他的
回音“.$i.”;
}
}
您的预期输出会是什么样子……好主意,@Baba,我应该想到的……编辑了我的答案。看看,已经有这么多答案了。。。如果您需要任何不同的信息,请告诉我您是在搜索a到z
还是a到z
或两者都是?他想要的是以每个字母开头的钥匙,而不仅仅是c。我喜欢猫。。。这一个似乎只会输出匹配的字母。我需要它们,只需将类添加到匹配项即可对不起,我不明白这个问题。现在你已经更新了,这对你没有帮助。我知道这一点。请尝试以下代码。它的工作原理是:$foo='bar';echo$foo[1];//输出:a
为了澄清,可以通过提供字符串中该字符的索引(从0开始)来访问字符串中的各个字符。因此,在我刚才提供的示例中,a是字符串“bar”中的第二个字符,但位于位置(索引)1。仅当您处于单字节世界(也称为ASCII)时才起作用。因此,您不想添加键为B的类吗?那么做一个范围是行不通的,因为B包括在范围内。@Sven他要求a-Z,所以我给了他a-Z。行不通。输出:a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i…
$arr = array("apple" => "Fruit that grows ...", "car" => "Vehicle on four...");
foreach ($arr as $k => $v) {
foreach(range('a','z') as $i ) {
if (strpos($k, $i) === 0)
echo "<div class='match'>". $i .'</div>';
else
echo '<div>'. $i .'</div>';
}
}