Intereting Posts
Zend Form Edit и Zend_Validate_Db_NoRecordExists Команды MySqli не синхронизированы; вы не можете запустить эту команду сейчас PHP / MySQL Показывать первые X результатов, скрыть остальные ошибка .htacess 500 Внутренняя ошибка сервера PDO pgsql – подсчет строк, на которые влияет функция pgsql Шифровать исходный код PHP в Yii mySQL – установить уровень изоляции с помощью PHP mysqli Команды не синхронизированы; вы не можете запустить эту команду сейчас, когда вызываете хранимую процедуру в Mysql YouYube API Посмотреть приватное видео ClassNotFoundException: Попытка загрузить класс «TwigExtension» из глобального пространства имен Symfony2: обратный Uri (Referrer) во время переключения локали Настройка заголовков ответов с промежуточным программным обеспечением в Lumen Динамическая конфигурация почты со значениями из базы данных htaccess добавить www, если не поддомен, если субдомен удалить www получение mysql_insert_id () при использовании ON DUPLICATE KEY UPDATE с PHP

PHP: объединить массивы в цикле

public function getCheckoutForm(){ $arr = array( 'cmd' => '_cart', 'business' => 'some@mail', 'no_shipping' => '1', 'upload' => '1', 'return' => 'url', 'cancel_return' => 'url1', 'no_note' => '1', 'currency_code' => 'url2', 'bn' => 'PP-BuyNowBF'); $cpt=1; foreach($this->items as $item){ $arr1[] = array( 'item_number_'.$cpt.'' => $item['item_id'], 'item_name_'.$cpt.'' => $item['item_name'], 'quantity_'.$cpt.'' => $item['item_q'], 'amount_'.$cpt.'' => $item['item_price'] ); $cpt++; } return array_merge($arr,$arr1[0],$arr1[1]); } 

Это возвращает массив следующим образом:

  Array ( [cmd] => _cart [business] => some@mail [no_shipping] => 1 [upload] => 1 [return] => url1 [cancel_return] =>url2 [no_note] => 1 [currency_code] => EUR [bn] => PP-BuyNowBF [item_number_1] => 28 [item_name_1] => item_name_1 [quantity_1] => 1 [amount_1] => 5 [item_number_2] => 27 [item_name_2] => item_name_2 [quantity_2] => 1 [amount_2] => 30 ) 

Проблема в том, что взамен $ arr1 [0] и $ arr1 [1] жестко закодированы. И если в цикле у меня есть более 2 массивов, скажем, 0,1,2,3 ан и так далее, этот код не будет работать. Есть идеи? Может быть, моя логика совершенно неверна …

Нет необходимости создавать массивы в вашем цикле – просто добавьте новые ключи непосредственно в первый массив:

 public function getCheckoutForm(){ $arr = array( 'cmd' => '_cart', 'business' => 'some@mail', 'no_shipping' => '1', 'upload' => '1', 'return' => 'url', 'cancel_return' => 'url1', 'no_note' => '1', 'currency_code' => 'url2', 'bn' => 'PP-BuyNowBF' ); $cpt=1; foreach($this->items as $item){ $arr['item_number_'.$cpt] = $item['item_id']; $arr['item_name_'.$cpt] = $item['item_name']; $arr['quantity_'.$cpt] = $item['item_q']; $arr['amount_'.$cpt] = $item['item_price']; $cpt++; } return $arr; } 

Надеюсь, я понял, что вы имеете в виду ^^

 foreach ($i = 0, $n = count($arr1); $i < $n; $i++) { $arr = array_merge($arr, $arr1[$i]); } return $arr; 

Я бы, наверное, сделал что-то вроде

 $count = count($arr1); for($i=0;$i<$count;$i++){ $arr = array_merge($arr,$arr1[$i]); } return $arr; 

Вы можете выполнить слияние на каждой итерации:

 foreach($this->items as $item){ $temp_arr = array( 'item_number_'.$cpt.'' => $item['item_id'], 'item_name_'.$cpt.'' => $item['item_name'], 'quantity_'.$cpt.'' => $item['item_q'], 'amount_'.$cpt.'' => $item['item_price'] ); $arr = array_merge($arr,$temp_arr) $cpt++; } 

что имеет то преимущество, что вы можете получить $temp_arr от функции,

или просто добавьте все элементы в один массив:

 foreach($this->items as $item){ $arr['item_number_'.$cpt.''] => $item['item_id']; $arr['item_name_'.$cpt.''] => $item['item_name']; $arr['quantity_'.$cpt.''] => $item['item_q']; $arr['amount_'.$cpt.''] => $item['item_price']; $cpt++; } 

сделай это

 $count = count($data); $sum = 1; $arr = []; for($i=0;$i<$count;$i++){ $temp = $arr; if($i == $count - 1){ $sum = 0; } $arr = array_merge($temp,$data[$i + $sum]); } return $arr;