@Flasher

Как создать массив и когда происходит POST добавлять в него значение?

Как создать массив и когда происходит POST добавлять в него значение?

public function order(...)
    {

        $order = [
            '1' => 'банан',
            '2' => 'помидор',
        ];

        $res_arr_values = array(); // получается, что он создается каждый раз и значения обнуляются

       /*
         * этот массив создается и в него после
         * каждого метода post хочу добавлять значения
         * из массива $order, чтобы было примерно так:
         * 
         * $res_arr_values = [
         *      [0] => массив,
         *      [1] => массив,
         *      [2] => массив,
         * ...
         * ]
         * 
         * **/
   }
  • Вопрос задан
  • 371 просмотр
Пригласить эксперта
Ответы на вопрос 3
@Atllantis
Ничего не понял.
Берите $_POST и добавляйте, в чём проблема?
Ответ написан
@Toey
можно использовать вот такую штуку
/**
	 * Merges two or more arrays into one recursively.
	 * If each array has an element with the same string key value, the latter
	 * will overwrite the former (different from array_merge_recursive).
	 * Recursive merging will be conducted if both arrays have an element of array
	 * type and are having the same key.
	 * For integer-keyed elements, the elements from the latter array will
	 * be appended to the former array.
	 * @param array $a array to be merged to
	 * @param array $b array to be merged from. You can specify additional
	 * arrays via third argument, fourth argument etc.
	 * @return array the merged array (the original arrays are not changed.)
	 * @see mergeWith
	 */
	public function mergeArray($a,$b)
	{
		$args=func_get_args();
		$res=array_shift($args);
		while(!empty($args))
		{
			$next=array_shift($args);
			foreach($next as $k => $v)
			{
				if(is_integer($k))
					isset($res[$k]) ? $res[]=$v : $res[$k]=$v;
				elseif(is_array($v) && isset($res[$k]) && is_array($res[$k]))
					$res[$k]=self::mergeArray($res[$k],$v);
				else
					$res[$k]=$v;
			}
		}
		return $res;
	}
Ответ написан
Immortal_pony
@Immortal_pony Куратор тега PHP
Я так понимаю, что вы хотите сохранять данные о заказах. Для этого вам необходимо использовать какое-либо хранилище данных. Наилучшим выбором будет какая-нибудь база данных (MySQL, PostgrSQL, и т.д.). Примитивнейшим же способ хранения данных будет файл. Ниже предоставляю пример реализации. Прошу обратить внимание на то, что код не идеален, упрощен для наглядности. Перед использованием необходимо убедиться, что пользователь, от имени которого работает web-сервер имеет доступ на запись файлов.

private $orders_filename = "orders.serialized";

public function getOrders()
{ 
    // Создание массива по умолчанию
    $orders = [];
   
    // Попытка считывания данных их файла
    if (file_exists($this->orders_filename)) {
        // Чтение файла и запись его содержимого в переменную
        $file = file_get_contents($this->orders_filename);

        // Десериализация строки в массив
        $orders = unserialize($file);
    } 


    return $orders;    
} 



public function addOrder($order)
{ 
    // Получения списка заказов
    $orders = $this->getOrders();
    // Добавление нового заказа 
    $orders[] = $order;
    // Сериализация массива (превращение его в строку):
    $serialized_orders = serialize($orders);
    // Сохранение файла
    $result = file_put_contents($this->orders_filename , $serialized_orders, FILE_APPEND | LOCK_EX);


    return $result;
}



public function order()
{
        $order = [
            '1' => 'банан',
            '2' => 'помидор',
        ];

       $this->addOrder($order);
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы