我有这样的关联数组(存储在$array中):
Array
(
[0] => Array
(
[one] => some text1
[two] => some paragraph here1.
)
[1] => Array
(
[one] => some text2
[two] => some paragraph here2.
)
[2] => Array
(
[one] => some text3
[two] => some paragraph here3.
)
[3] => Array
(
[one] => some text4
[two] => some paragraph here4.
)
[4] => Array
(
[one] => some text5
[two] => some paragraph here5.
)
)
现在,我想像这样存储它们的结果:
$first="一些文本1,一些文本2,一些文本3,一些文本4,一些文本5";
$second='此处的某个段落1。此处的某些段落2。此处的某些段落3。此处的某些段落4。此处的某些段落5';
挣扎了很多,我得到了这样的解决方案:
$first= '';
$second = '';
for($i = 0; $i<count($array); $i++){
$first .= $array[$i]['one'] . ($i == count($array) - 1 ? '': ',');
$second .= $array[$i]['two'];
}
echo $first;
echo $second;
但我希望已经有一个内置的php函数,可以将assoc数组拆分为两个不同的数组。
对于PHP版本>5.5。您可以简单地将array_column
与implode
一起使用,如
echo $first = implode(',',array_column($your_array,'one'));
echo $second = implode(',',array_column($your_array,'two'));
对于较低版本,您可以使用类似array_map
的
echo $first = implode(',',array_map(function($v){ return $v['one'];} ,$your_array));
echo $second = implode(',',array_map(function($v){ return $v['two'];},$your_array));
foreach ( $array as $data ) {
$first .= $data['one'].',';
$two .= $data['two'].',';
}
$firstdata = rtrim($first,',');
$seconddata = rtrim($two, ',');
$arrFirst = array_column($array,'one');
$arrSecond = array_column($array,'two');
$first = implode(',',$arrFirst);
$second = implode(',',$arrSecond);
如果array_column()
没有退出,使用这个
if (! function_exists('array_column')) {
function array_column(array $input, $columnKey, $indexKey = null) {
$array = array();
foreach ($input as $value) {
if ( ! isset($value[$columnKey])) {
trigger_error("Key '"$columnKey'" does not exist in array");
return false;
}
if (is_null($indexKey)) {
$array[] = $value[$columnKey];
}
else {
if ( ! isset($value[$indexKey])) {
trigger_error("Key '"$indexKey'" does not exist in array");
return false;
}
if ( ! is_scalar($value[$indexKey])) {
trigger_error("Key '"$indexKey'" does not contain scalar value");
return false;
}
$array[$value[$indexKey]] = $value[$columnKey];
}
}
return $array;
}
}
使用array_column()和内爆()
array_column()函数在>PHP 5.5.0
中工作
工作示例:
<?php
$arr = array(
array('one' => 'some text1', 'two' => 'some paragraph here1'),
array('one' => 'some text2', 'two' => 'some paragraph here2'),
array('one' => 'some text3', 'two' => 'some paragraph here3'),
array('one' => 'some text4', 'two' => 'some paragraph here4'),
);
$firstS = implode(', ', array_column($arr, 'one'));
$secondS = implode('. ', array_column($arr, 'two'));
print_r($firstS);
echo "'n'n";
print_r($secondS);
?>
看到它工作实时
说明:
1) 您需要数组列。
2) 在两个单独的数组中获取数组列one
和two
。
3) impode()
这些阵列以获得期望的输出。
如果您的PHP版本低于5.5.0
,则需要为array_column()
编写一个自定义函数。
从而不会返回Fatal Error
。
以下是代码:
<?php
if (! function_exists('array_column')) {
function array_column(array $input, $columnKey, $indexKey = null) {
$array = array();
foreach ($input as $value) {
if ( ! isset($value[$columnKey])) {
trigger_error("Key '"$columnKey'" does not exist in array");
return false;
}
if (is_null($indexKey)) {
$array[] = $value[$columnKey];
}
else {
if ( ! isset($value[$indexKey])) {
trigger_error("Key '"$indexKey'" does not exist in array");
return false;
}
if ( ! is_scalar($value[$indexKey])) {
trigger_error("Key '"$indexKey'" does not contain scalar value");
return false;
}
$array[$value[$indexKey]] = $value[$columnKey];
}
}
return $array;
}
}