Как «сгладить» многомерный массив в простой в PHP? - PullRequest
70 голосов
/ 09 февраля 2009

Вероятно, это вопрос новичка, но я уже давно изучаю документацию и не могу найти никакого решения. Я думал, что смогу использовать implode для каждого измерения, а затем соединить эти строки вместе с str_split, чтобы создать новый простой массив. Однако я никогда не знаю, не будет ли шаблон соединения также в значениях и поэтому после выполнения str_split мои исходные значения могут сломаться.

Есть ли что-то вроде combine($array1, $array2) для массивов внутри многомерного массива?

Ответы [ 21 ]

0 голосов
/ 24 июля 2014

Если вас интересуют только значения для одного конкретного ключа, этот подход может оказаться полезным:

function valuelist($array, $array_column) {
    $return = array();
    foreach($array AS $row){
        $return[]=$row[$array_column];
    };
    return $return;
};

Пример:

Учитывая $ get_role_action =

array(3) {
  [0]=>
  array(2) {
    ["ACTION_CD"]=>
    string(12) "ADD_DOCUMENT"
    ["ACTION_REASON"]=>
    NULL
  }
  [1]=>
  array(2) {
    ["ACTION_CD"]=>
    string(13) "LINK_DOCUMENT"
    ["ACTION_REASON"]=>
    NULL
  }
  [2]=>
  array(2) {
    ["ACTION_CD"]=>
    string(15) "UNLINK_DOCUMENT"
    ["ACTION_REASON"]=>
    NULL
  }
}

чем $variables['role_action_list']=valuelist($get_role_action, 'ACTION_CD'); приведет к:

$variables["role_action_list"]=>
  array(3) {
    [0]=>
    string(12) "ADD_DOCUMENT"
    [1]=>
    string(13) "LINK_DOCUMENT"
    [2]=>
    string(15) "UNLINK_DOCUMENT"
  }

Оттуда вы можете выполнять поиск значений следующим образом:

if( in_array('ADD_DOCUMENT', $variables['role_action_list']) ){
    //do something
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...