这是我当前的数组,它保留了值的第一个字符
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 '_'