Я в основном хочу использовать str_replace все значения многомерного элемента. Кажется, я не могу понять, как это сделать для многомерных систем. Я немного застреваю, когда значение представляет собой массив, который, как представляется, находится в бесконечном цикле. Im новый для php, поэтому emaples были бы полезны.
function _replace_amp($post = array(), $new_post = array()) { foreach($post as $key => $value) { if (is_array($value)) { unset($post[$key]); $this->_replace_amp($post, $new_post); } else { // Replace :amp; for & as the & would split into different vars. $new_post[$key] = str_replace(':amp;', '&', $value); unset($post[$key]); } } return $new_post; }
благодаря
Это неправильно и приведет вас в бесконечный цикл:
$this->_replace_amp($post, $new_post);
Вам не нужно отправлять new_post
в качестве аргумента, и вы также хотите уменьшить проблему для каждой рекурсии. Измените функцию следующим образом:
function _replace_amp($post = array()) { $new_post = array(); foreach($post as $key => $value) { if (is_array($value)) { unset($post[$key]); $new_post[$key] = $this->_replace_amp($value); } else { // Replace :amp; for & as the & would split into different vars. $new_post[$key] = str_replace(':amp;', '&', $value); unset($post[$key]); } } return $new_post; }
сfunction _replace_amp($post = array()) { $new_post = array(); foreach($post as $key => $value) { if (is_array($value)) { unset($post[$key]); $new_post[$key] = $this->_replace_amp($value); } else { // Replace :amp; for & as the & would split into different vars. $new_post[$key] = str_replace(':amp;', '&', $value); unset($post[$key]); } } return $new_post; }
сfunction _replace_amp($post = array()) { $new_post = array(); foreach($post as $key => $value) { if (is_array($value)) { unset($post[$key]); $new_post[$key] = $this->_replace_amp($value); } else { // Replace :amp; for & as the & would split into different vars. $new_post[$key] = str_replace(':amp;', '&', $value); unset($post[$key]); } } return $new_post; }
… Что случилось с array_walk_recursive ?
<?php $sweet = array('a' => 'apple', 'b' => 'banana'); $fruits = array('sweet' => $sweet, 'sour' => 'lemon'); function test_print($item, $key) { echo "$key holds $item\n"; } array_walk_recursive($fruits, 'test_print'); ?>