Я пытаюсь выяснить, как передать курсор массива (т.е. произвольное местоположение в массиве) в качестве параметра функции. Предположим, у меня есть следующий массив:
$recipe = array("ingredient1"=>array(
"type"=>"cheddar cheese",
"quantity"=>"1 cup",
"format"=>"shredded"),
"ingredient2"=>array(
"type"=>"wheat bread",
"quantity"=>"2 slices")
);
Предположим дополнительно, что у меня есть функция thingee(&$recipe)
что (очевидно) принимает $recipe
в качестве параметра по ссылке.
Вопрос: как пройти thingee()
место в пределах $recipe
т.е. $recipe["ingredient1"]["quantity"]
, $recipe["ingredient2"]["type"]
, так далее.
Вы можете просто передать его, как указано:
function thingee(&$recipe) {
$recipe = "gouda";
}
$recipe = array("ingredient1"=>array("type"=>"cheddar cheese"));
thingee($recipe["ingredient1"]["type"]);
echo $recipe["ingredient1"]["type"]; // outputs: gouda
Тем не менее, вы не можете ожидать в функции thingee чтобы иметь возможность перейти к другому элементу в глобальном $ рецепт массив. Он просто получает этот один элемент без контекста «parent» или «sybling».
пример как решение:
function a(&$a){ $a=$a.'#'; }
$array = array("foo" => "bar");
$t = &$array["foo"];
a($t);
print_r($array);