2014-12-13 3 views
-2

У меня есть несколько многомерных массивов, которые я хотел бы ввести с помощью foreach, выберите конкретный элемент. Запустите функцию с этим значением и измените другой элемент внутри массива с возвращаемым значением из функции. Некоторые примеры кода:PHP: выбор элемента и изменение другого внутри многомерного массива

Многомерные массивы:

['arrayName']=>array(2) 
{ 
    ['array2Name']=>array(1) 
    { 
     ['someElement']=>String(0) "" 
     ['someElement']=>String(0) "" 
     ['someElement']=>String(0) "" 
     ['someElement']=>String(0) "" 
     ['array3Name']=>array(0) 
     { 
      ['ElementToGet']=>String(4) "1234" 
      ['ElementToChange']=>String(8) "abcdefgh" 

Я понятия не имею, как выбрать "ElementToGet". Но как только я получаю его, он должен быть обработан следующим образом:

$element = (the way to select it); 
$returningElement = $this->my_model->myFunction($element); 

Вернувшийся элемент должен заменить «ElementToChange» в массиве. Я понятия не имею, как с этим справиться, может ли кто-нибудь мне помочь?

+0

Он вложен, например: '$ array ['arrayName'] ['array2Name'] ['array3Name'] ['ElementToGet']'. Вы можете использовать это в чтении или записи, чтобы получить или установить элементы, на которые вы ссылаетесь. – halfer

+1

закончил тем, что использовал множество вложенных циклов foreach с тестированием, если следующий был массивом. Спасибо за ответ! – DonBananMike

ответ

1

Нашел решение самостоятельно. Много вложенных петлей foreach.

Если кто-то есть такая же проблема, вот мой способ сделать это:

foreach($newsletter_structure as $category_tree) 
    { 
     if(is_array($category_tree)) 
     { 
      foreach($category_tree as $a) 
      { 
       if(is_array($a)) 
       { 
        foreach($a as $b) 
        { 
         if(is_array($b)) 
         { 
          foreach($b as $c) 
          { 
           if(is_array($c)) 
           { 
            foreach($c as $d) 
            { 
             if(is_array($d)) 
             { 
              foreach($d as $e) 
              { 
               $newsitem_id = $e['Id']; 
               $newUrl = $this->setupLoggingUrl($newsitem_id, $newsletter_id); 
               $e['URL'] = $newUrl; 

if(is_array()) Использовал для того, чтобы избежать возможных ошибок.

Смежные вопросы