У меня установлена Laravel
с Moloquent
(Mongo). Mongo
не обязательно проблема, когда модель загружает запись "JSON", она становится ассоциативным массивом PHP.
Мне нужно иметь возможность создать функцию в модели, которая возвращает элемент массива в виде строки.
например:
$search1 = 'folder1/folder2/folder3/item';
//would look like: $array['folder1'][folder2'][folder3']['item']
$search2 = 'folder1/picture1/picture';
//would look like: $array['folder1'][picture1']['picture']
echo getRecord($search1);
echo getRecord($search2);
function getRecord($str='') {
//this function take path as string and return array
return $result;
}
Полагаю, я мог бы использовать оператор ??
, но мне нужно сформировать массив "check", означающий:
Как бы я сформировал $array['1']['2']['3']
, если у меня есть 3 элемента глубиной или 1 ($array['1']
), или 5 ($array['1']['2']['3']['4']['5']
).
Я создаю API для добавления элемента или папки в Mongo.
Ввод : "f1/f2/item"
Эта функция у меня есть:
echo print_r($j->_arrayBuilder('f1/f2/item'), true);
public function _arrayBuilder($folderPath)
{
$ret = array();
$arr = explode('/', $folderPath);
Log::info("Path Array:\n" . print_r($arr, true));
$x = count($arr) - 1;
Log::info("Count: " . $x);
for ($i = 0; $i <= $x; $i++) {
Log::info("Element of arr: " . $arr[$i]);
$ret = array($arr[$i] => $ret);
}
return $ret;
}
Токовый выход :
Array
(
[item] => Array
(
[f2] => Array
(
[f1] => Array
(
)
)
)
)
Желаемый выход:
Array
(
[f1] => Array
(
[f2] => Array
(
[item] => Array
(
)
)
)
)
Примечание: я пробовал PHP array_reverse, и он не работает на этом .. Многомерный и не числовой ..
Спасибо.