如何在PHP中从数组中获取第一个字符。

6
  • 我需要为电子商务网站创建品牌。
  • 我需要一个解决方案,可以从数组中获取第一个字符。
  • 我尝试了一些代码,但它并不是很有用。
  • 我需要像下面提到的那样的品牌。

例如

A             
Alpha
Aloo
Amakeaviral

B
Boki
Bone

我的数据来自数据库,存储在一个数组中。我需要获取该数组的第一个字符。

我尝试过:

$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone");

for($i = 0; $i <= count($my_array); $i++){
    $first_char = $my_array[$i]{0}; 
    echo $first_char;
}

但这个方法效果不是很好。我该怎么办?


你应该使用 $my_array[$i][0]。另外,你的循环有误,应该是 $i < count($my_array) - bansi
7个回答

11
尝试使用 substr() 简单地截取。
$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone");
foreach($my_array as $v){
    echo substr($v, 0, 1);
}

关于你的代码:从循环中删除=(否则会出现提示),并使用[]而不是{}

$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone");
for($i=0; $i < count($my_array); $i++){
    $first_char = $my_array[$i][0]; 
    echo $first_char;
}

3
我希望这对你有用 -
$my_array = array("Alpha","Aloo","Amakeaviral","Boki","Bone");
$newArray = array();
foreach($my_array as $value) {
   $first_char = $value[0];
   if (!empty($newArray)) {
       $flag = false;
       foreach ($newArray as $key => $val) {
           if ($first_char == $key){
                $newArray[$key][] = $value;
                $flag = true;
           }
       }
       if (!$flag) {
           $newArray[$first_char][] = $first_char;
           $newArray[$first_char][] = $value;
       }
   } else {
        $newArray[$first_char][] = $first_char;
        $newArray[$first_char][] = $value;
   }
}
var_dump($newArray);

与上述代码相同,但是代码更加简短:

$my_array = array("Alpha","Aloo","Amakeaviral","Boki","Bone");
$newArray = array();
foreach($my_array as $value) {
    if (empty($newArray[$value[0]])){
        $newArray[$value[0]][]=$value[0];
    }
    $newArray[$value[0]][] = $value;
}
var_dump($newArray);

1
太多代码了?尝试使用 foreach($my_array as $value) { if (empty($newArray[$value[0]])){ $newArray[$value[0]][]=$value[0]; } $newArray[$value[0]][] = $value; } 以达到同样的效果! - bansi
@bansi 希望你能用更少的代码完成所需的任务并添加答案。我做不到。 - Sougata Bose
我可以在这个答案中添加缩写版本。 - bansi
上述将是一个带有第一个字符索引的数组。对于下一个数组,如果需要区分第一个字符和值,该怎么办? - Sougata Bose
$value[0] 是第一个字符,它被用作数组键。因此,您将始终将正确的值存储到正确的键中! - bansi
现在明白了...漏掉了那个东西。 :) - Sougata Bose

3

substr

查找第一个字符

substr("Hello", 0, 1); //output "H"

尝试:

$first_char = substr($my_array[$i], 0, 1);

完整代码:

for($i = 0; $i < count($my_array); $i++){
    echo $first_char = substr($my_array[$i], 0, 1); 
}

注意:$i <= count($my_array) 应该改为 $i < count($my_array)

实时演示


2

我知道这可能有点老了,很抱歉,但是我使用了一个对象数组来完成它。我想在按字母顺序排列的页面上显示每个对象的标题。我使用了以下方法:

$items = array
(
[0] => stdClass Object
    (
        [title] => Alpha
        [name] => Joe Blogs
        [address] => 123 Harry Street
    )

[1] => stdClass Object
    (
        [title] => Bravo
        [name] => Jane Doe
        [address] => 456 Upton Street
    )

[2] => stdClass Object
    (
        [title] => Charlie
        [name] => Jane Doe
        [address] => 456 Upton Street
    )

)

在一个辅助类中声明这个函数

public static function alphaSortItems ($items) {
        $sortedItems = array();
        foreach ($items as $item) {
            $sortedItems[$item->title[0]][] = $item;
        }
        return $sortedItems;
    }

然后我使用以下方式展示它们:

 <?php $sortedItems = Helper::alphaSortItems($this->items); ?>
        <?php foreach ($sortedItems as $key => $value) : ?>
            <h2><?php echo $key; ?></h2>
            <?php foreach ($value as $item) : ?>
                <h3><?php echo $item->title; ?></h3>
            <?php endforeach; ?>
        <?php endforeach; ?>

这就是我做的方式,无论如何 :-)

2
基本上,每个字符串都是一个数组,可以像访问数组一样访问它:
$str = 'This is a string';
echo $str[0]; // Output: T
echo $str[1]; // Output: h
echo $str[2]; // Output: i

只需要改变这个:

$first_char = $my_array[$i]{0}; 

转变为:

$first_char = $my_array[$i][0]; 

2

试试这个

$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone");
foreach($my_array as $v){
    echo $v[0];
}

1
请尝试这个:

请尝试这个:

$my_array = array("Alpha", "Aloo", "Amakeaviral", "Boki", "Bone");

for($i = 0; $i < count($my_array); $i++){
    $first_char = $my_array[$i][0]; 
    echo $first_char;
}

1
你会收到未定义索引通知吗? - Rakesh Sharma
嘿@Riteshdjoshi,我刚刚做了一些格式上的更改,只是为了让它看起来更美观,没有其他意思! - Vivek Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接