php - 按键中的字符串对数组值进行分组?

标签 php arrays regex

<分区>

好的给定这个数据结构:

array(
         'name one' => 'fred',
         'desc one' => 'lorem ipsum'
         'name two' => 'charles',
         'desc two' => 'lorem ipsum'
);

在 php 中,我如何匹配分配给键 ONE 或 TWO 的数字值并返回:

array(
           'one' => array('name' => 'fred', 'desc' => 'lorem ipsum'),
           'two' => array('name' => 'charles' , 'desc => 'lorem ipsum')
);

最佳答案

这是一个直截了当的逻辑问题,这就是你如何做的(我确信有一个更快的替代方案,但这正是你需要的 ):

$new = array();
foreach($array as $key => $val) {
    list($item, $number) = explode(' ', $key);
    $new[$number][$item] = $val;
}

我们使用 list()explode()在上面的示例中获取所需的变量。即数字“一”或“二”和项目名称,本质上是“名称”和“描述”。

Example


编辑

正如 Lajos 所说,如果未设置 $new[$number],此版本将解决该问题并创建所需的数组:

$new = array();
foreach($array as $key => $val) {
    list($item, $number) = explode(' ', $key);
    // if the array isn't set
    if(!isset($new[$number])) $new[$number] = array();
    $new[$number][$item] = $val;
}

Example

关于php - 按键中的字符串对数组值进行分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30429737/

相关文章:

java - 将 PHP/jQuery 应用程序移植到 Java/Wicket

php - 如何从 MySQL 查询结果中的特定列中找出值?

c++ - 在 C++ 中,如何声明一个将任何对象的 vector 数组作为参数的函数?

regex - 如何在 Eclipse 中保存查找/替换设置?

javascript - 正则表达式从域字符串中获取 SLD + TLD

javascript - Angular 2响应式(Reactive)表单控件验证模式

php - 使用php发送邮件报错

php - Mysql在case语句中使用DESC

css - AngularJS:有没有办法使用 ng-repeat 从同一数据数组创建行和列?

php - PHP list()错误: “Undefined offset”