Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 以字符开头的数组键_Php - Fatal编程技术网

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>';
 }
}