如何在数组输出的下划线之前抓取单词


How do I grab a word before underscore on my array ouput

这是我当前的数组,它保留了值的第一个字符

Array ( [n] => Array ( [0] => name_john ) [a] => Array ( [0] => age_30 ) )
foreach ($queryArray as $key) {
    $inArray[$key[0]][] = $key;
}

问题:如何在下划线前抓取一个单词并将数组更改为

Array
(
    [name] => Array
        (
            [0] => name_john
        )
    [age] => Array
        (
            [0] => age_30
        )
)

要解析出下划线之前的单词,请使用爆炸:

// $key = name_john
$split_key = explode('_',$key);
// $split_key[0] equals name
$pieces = explode("_", $key);
echo $pieces[0];
  • 要拆分该值,请使用explode('_', $value)并获取返回数组的第一个项
  • 要修改foreach中的数组,请在数组上添加引用
  • 要更改数组中元素的键,请检查以下线程:在PHP中,如何更改数组元素的键

工作示例:(此处为代码板(

<?php
$array = array('n' => Array(0 => 'name_john'), 'a' => Array('0' => 'age_30'));
foreach ($array as &$value) {
    foreach ($value as $oldkey => $name) {
        $chunks = explode('_', $name);
        $newkey = $chunks[0];
        // see https://stackoverflow.com/questions/240660/in-php-how-do-you-change-the-key-of-an-array-element
        $value[$newkey] = $value[$oldkey];
        unset($value[$oldkey]);
    }
}
var_dump($array);

输出:

array
  'n' => 
    array
      'name' => string 'name_john' (length=9)
  'a' => &
    array
      'age' => string 'age_30' (length=6)
$inArray[$key[0]][] = substr($key, 0, strpos($key, '_'));

但是,如果您使用"键"作为关联索引来创建数组,如

Array ( [n] => Array ( ["name"] => john ) [a] => Array ( ["age"] => 30 ) )

然后你可以

foreach ($queryArray as $subArr) {
    foreach($subArr as $subkey => $val){
        $inArray[$subkey][] = $val;
    }
}

你应该得到一个像这样的阵列

Array
(
    ["name"] => "john"
    ["age"] => 30
)

虽然它不是"想要的"输出,但它可能更干净,更容易用于你正在做的事情。

试着把这个放在foreach语句中:(

$string = strstr($key, '_', true); 
echo $string; // prints ewverything before the '_'