PHP-动态生成的数组元素()


PHP - dynamically generated elements of an array()?

1。我的阵列

我有返回数组数组的函数:

function show_array() {
   $myArray = array(
        array(
            'foo' => 'bar',
            'bar' => 'foo',
            'aaa' => 'bbb'),
        array(
            'foo' => 'bar2',
            'bar' => 'foo',
            'aaa' => 'bbb'),
        array(
            'foo' => 'bar3',
            'bar' => 'foo',
            'aaa' => 'bbb'),
        array(
            'foo' => 'bar4',
            'bar' => 'foo',
            'aaa' => 'bbb'),
        //I want to add additional elements here using foreach
   );
   return $myArray;
}

2.要动态添加的元素

正如上面的评论中所说,我想在foreach循环的基础上向$myArray添加一些额外的元素,这里有一个简单的函数,它什么都不返回,但显示了我想插入的内容:

$addToMyArray = array('one','two','three');
foreach($addToMyArray as $newElement) {
    array(
        'foo' => $newElement,
        'bar' => 'foo',
        'aaa' => 'bbb',
    );
}

3.期望的结果

所以最后show_array()应该返回:

        array(
            array(
                'foo' => 'bar',
                'bar' => 'foo',
                'aaa' => 'bbb'),
            array(
                'foo' => 'bar2',
                'bar' => 'foo',
                'aaa' => 'bbb'),
            array(
                'foo' => 'bar3',
                'bar' => 'foo',
                'aaa' => 'bbb'),
            array(
                'foo' => 'bar4',
                'bar' => 'foo',
                'aaa' => 'bbb'),
            //added stuff
            array(
                'foo' => 'one,
                'bar' => 'foo',
                'aaa' => 'bbb'),
            array(
                'foo' => 'two,
                'bar' => 'foo',
                'aaa' => 'bbb'),
            array(
                'foo' => 'three,
                'bar' => 'foo',
                'aaa' => 'bbb'),
       );

我试图以$myArray[]的形式返回新选项,对它们进行array_push,然后进行array_merge,但似乎什么都不起作用,我也无法在$myArray数组中放置任何循环(这是显而易见的)。但是show_array()从不返回生成的元素。

应该怎么做?

您只需要在循环中追加到$myArray

$addToMyArray = array('one','two','three');
foreach($addToMyArray as $newElement) {
    $myArray[] = array(
        'foo' => $newElement,
        'bar' => 'foo',
        'aaa' => 'bbb',
    );
}

你的意思是类似的吗?

function show_array() {
   $myArray = array(
        array(
            'foo' => 'bar',
            'bar' => 'foo',
            'aaa' => 'bbb'),
        array(
            'foo' => 'bar2',
            'bar' => 'foo',
            'aaa' => 'bbb'),
        array(
            'foo' => 'bar3',
            'bar' => 'foo',
            'aaa' => 'bbb'),
        array(
            'foo' => 'bar4',
            'bar' => 'foo',
            'aaa' => 'bbb'),
    //I want to add additional elements here using foreach
   );
    $addToMyArray = array('one','two','three');
    foreach($addToMyArray as $newElement) {
        $myArray[] = array(
            'foo' => $newElement,
            'bar' => 'foo',
            'aaa' => 'bbb',
        );
    }
   return $myArray;
}

或者类似的东西:

function compileArray($values) {
    myArray = array();
    foreach($values as $newElement) {
        $myArray[] = array(
            'foo' => $newElement,
            'bar' => 'foo',
            'aaa' => 'bbb',
        );
    }
   return $myArray;
}
$result = array_merge(show_array(),compileArray(array('one','two','three')));

或者,增加了更多的灵活性:

function createElementArray($value) {
    return array(
        'foo'=>$value,
        'bar'=>'foo',
        'aaa'=>'bbb'
    );
}
$result = array_merge(
    show_array(),
    array_map(createElementArray, array('one','two','three'))
);

为了将单个数组的代码封装为易于互换的函数。