如何从这个关联数组数组中提取相关元素?

时间:2014-04-01 10:31:20

标签: php arrays associative-array

我在php中有以下具有挑战性的关联数组。

    array(
            (int) 0 => array(
                    'table' => array(
                            'venue' => 'venue1',
                            'name' => 'name1'                                
                    )
            ),
            (int) 1 => array(
                    'table' => array(
                            'venue' => 'venue1',
                            'name' => 'name2'      
                    )
            ),
            (int) 2 => array(
                    'table' => array(
                            'venue' => 'venue2',
                            'name' => 'name3'      
                    )
            ),
            (int) 3 => array(
                    'table' => array(
                            'venue' => 'venue3',
                            'name' => 'name4'      
                    )
            )
    )     

我想根据场地提取相关名单。我想实现一个函数ExtractNameArray($venue),这样当$venue=='venue1'时,返回的数组看起来像array('name1', 'name2')

我一直在讨论这个问题。我从$ foreach开始,我被卡住了。怎么能在PHP中完成?非常感谢你。

2 个答案:

答案 0 :(得分:1)

function ExtractNameArray($venue) 
{
    $array = array(); // your array 
    $return_array = array();
    foreach($array as $arr)
    {
        foreach($arr['table'] as $table)
        {
            if($table['venue'] == $venue)
            {
                $return_array[]['name'] = $table['name'];
            }
        }
    }
    return $return_array;
}

您必须使用您的数组定义$ array。祝你好运

答案 1 :(得分:1)

首先,您必须将包含数据的数组传递给函数

第二,函数的名称应该以较低的字符(php约定)

开头

试试这个

function extractNameArray($array, $venue) {
    $results = array();
    foreach($array as $key=>$value) {
        if(isset($value['table']['venue'])&&$value['table']['venue']==$venue) {
            isset($value['table']['name']) && $results[] = $value['table']['name'];
        }
    }
    return $results;
}