首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按字符数分组数组

问按字符数分组数组
EN

Stack Overflow用户
提问于 2013-08-24 20:19:04
回答 2查看 370关注 0票数 0

下面的代码将字符串放入数组中,并按每个元素中的字符数进行排序。

代码语言:javascript
复制
$str = 'audi toyota bmw ford mercedes dodge ...';

$exp = explode(" ", $str);

usort($exp, function($a, $b){
  if (strlen($a) == strlen($b)) {
    return 0;
  }
  return (strlen($a) < strlen($b)) ? -1 : 1;
});

如何处理这个一维数组,并将元素按字符数分组,索引指示字符数。在元素组中?

代码语言:javascript
复制
array(
[3] => array(bmw, ... )
[4] => array(ford, audi, ... )
[5] => array(dodge, ... )
)

有没有办法获取多维数组并以php格式打印它?

ie:

代码语言:javascript
复制
$arr = array(
"3" => array("bmw"),
"4" => array("audi"),
"5" => array("dodge")
);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-24 20:20:31

这可能是最容易做到的:

代码语言:javascript
复制
$exp = explode(" ",$str);
$group = []; // or array() in older versions of PHP
foreach($exp as $e) $group[strlen($e)][] = $e;
ksort($exp); // sort by key, ie. length of words
var_export($exp);
票数 2
EN

Stack Overflow用户

发布于 2013-08-24 20:31:35

代码语言:javascript
复制
$str = 'audi toyota bmw ford mercedes dodge';
$words = explode(" ", $str); // Split string into array by spaces
$ordered = array();
foreach($words as $word) { // Loop through array of words
    $length = strlen($word); // Use the character count as an array key
    if ($ordered[$length]) { // If key exists add word to it
        array_push($ordered[$length], $word);
    } else { // If key doesn't exist create a new array and add word to it
        $ordered[$length] = array($word);
    }
}
ksort($ordered); // Sort the array keys
print_r($ordered);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18422755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档