我有阵列:
array (
[name_0] => 'ABC',
[price_0] => '5000',
[name_1] => 'DEF',
[price_1] => 499,
[name_n] => 'GHI',
[price_n] => 1000
);
我想得到:name_0 | name_1 | name_n ....和price_0 | price_1 | price_n ....
答案 0 :(得分:2)
如果这些都是名称/价格对,并且您想要这些值,则可以利用PHP 5.5的array_column()函数:
$chunked = array_chunk($array, 2);
$names = array_column(
$chunked,
0
);
$names = implode('|', $names);
$prices = array_column(
$chunked,
1
);
$prices = implode('|', $prices);
如果您正在运行早期版本的PHP:
$chunked = array_chunk($array, 2);
$names = array_map(
function ($value) {
return $value[0];
},
$chunked
);
$names = implode('|', $names);
$prices = array_map(
function ($value) {
return $value[1];
},
$chunked
);
$prices = implode('|', $prices);
答案 1 :(得分:0)
我愿意:
$temp = array_flip($array);
sort($temp);
$str = implode("|", $temp);
只要您希望name
首先出现,这似乎有效,因为n
在字母表中较早。如果您希望相应的值以相同的顺序进行内爆,而不是键:
ksort($array);
$str = implode("|", $array);
答案 2 :(得分:0)
尝试以下内容
$a = array (
'name_0' => 'ABC',
'price_0' => '5000',
'name_1' => 'DEF',
'price_1' => 499,
'name_n' => 'GHI',
'price_n' => 1000
);
$arr_name = array();
$arr_price = array();
foreach($a as $k=>$v){
if (stripos(strtolower($k), 'name') !== false) {
$arr_name[$k] = $v;
}else{
$arr_price[$k] = $v;
}
}
$a = array_merge($arr_name, $arr_price);
$res = implode('|', $a);
echo $res;
<强>输出强>
ABC|DEF|GHI|5000|499|1000