assoc数组转换为两个不同的数组并将它们连接起来


assoc arrays to two different arrays and join them

我有这样的关联数组(存储在$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_columnimplode一起使用,如

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) 在两个单独的数组中获取数组列onetwo

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;
    }
}