Имеется массив:
[my:МоиПоля] => Array
(
[attr] => Array
(
[xmlns:xsi] => http://www.w3.org/2001/XMLSchema-instance
[xmlns:pc] => http://schemas.microsoft.com/office/infopath/2007/PartnerControls
[xmlns:ma] => http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes
[xmlns:d] => http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields
[xmlns:q] => http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields
[xmlns:dfs] => http://schemas.microsoft.com/office/infopath/2003/dataFormSolution
[xmlns:dms] => http://schemas.microsoft.com/office/2009/documentManagement/types
[xmlns:my] => http://schemas.microsoft.com/office/infopath/2003/myXSD/2016-04-22T08:03:54
[xmlns:xd] => http://schemas.microsoft.com/office/infopath/2003
[xml:lang] => uk-UA
)
[my:ODM_Total] => Array
(
[my:Date] => Array
(
[value] => 2017-05-09
)
[my:TotalScore] => Array
(
[value] => 384
)
[my:Description] => Array
(
)
[my:Manager] => Array
(
[value] => "I"
)
[my:Store] => Array
(
[value] => 3101
)
)
[my:Clean] => Array
(
[my:Total_Clean] => Array
(
[value] => 63
)
[my:CH_1] => Array
(
[value] => true
)
[my:L_1] => Array
(
[value] => 5
)
[my:CH_2] => Array
(
[value] => true
)
[my:L_2] => Array
(
[value] => 5
)
[my:CH_3] => Array
(
[value] => true
)
[my:CH_4] => Array
(
[value] => true
)
[my:L_4] => Array
(
[value] => 5
)
[my:L_3] => Array
(
[value] => 5
)
[my:CH_5] => Array
(
[value] => false
)
[my:L_5] => Array
(
)
[my:CH_6] => Array
(
[value] => true
)
[my:L_6] => Array
(
[value] => 5
)
И т.д.
Нужно сделать функцию для поиска за ключом в виде "/my:CH_\d+/"
и чтобы в результате получился массив:
array(
[my:CH_1]=>array(
[value]=>true
) ...
На данный момент есть только вот такая функция:
function searchExc($array, $key)
{
$results = array();
if (is_array($array)) {
foreach ($array as $key2=>$subarray) {
if (preg_match($key,$key2))
if(is_array($array[$key2]) && isset($array[$key2]['value'])) {
$results[] = $array;
}
$results = array_merge($results, searchExc($subarray, $key, $value));
}
}
return $results;
}
но она не выводит то что надо... Она выводит это:
Array
(
[0] => Array
(
[my:Total_Clean] => Array
(
[value] => 63
)
[my:CH_1] => Array
(
[value] => true
)
[my:L_1] => Array
(
[value] => 5
)
[my:CH_2] => Array
(
[value] => true
)
[my:L_2] => Array
(
[value] => 5
)
[my:CH_3] => Array
(
[value] => true
)
[my:CH_4] => Array
(
[value] => true
)
[my:L_4] => Array
(
[value] => 5
)
[my:L_3] => Array
(
[value] => 5
)
что-то не так с функцией, поэтому прошу помочь.
Искал по всем ресурсам и не могу найти...
Наперед спасибо за ответы.
Дополнительно:
Массив многомерный и эти ключи могут быть разбросаны в разных измерениях
и нужно найти все ключи с данным схождением.
$input=['k1'=>['my:CH_1'=>['a'=>'b'],'c'=>'b'],'k2'=>'v2','my:CH_2'=>'k2'];
$output = [];
function walk($input, &$output){
foreach($input as $key => $value){
if(substr($key, 0, 6) === 'my:CH_') $output[$key] = $value;
if(is_array($value)) walk($value, $output);
}
}
walk($input, $output);
var_dump($output);
sandbox
Виртуальный выделенный сервер (VDS) становится отличным выбором
Доброго времени суток! Подскажите, как правильно реализовать блокировку записи в MySQL
Здравствуйте! Скажите, как можно сменить права на файл, если функция chmod отключена? Возможно есть вариант через создание своей функции?