2015-11-21 3 views
0

Я работаю с небольшой дебетовой системой кредитования. Он производит ежедневную транзакцию, которую я получаю из этого массива. 'Создайте новый массив из многомерного массива, который ищет и сопоставляет определенное значение php?

$trans_arr = array(

     0 => array(
      '2015-21-11', 
       'credit#50', 
      'debit#70' 
      ), 

     1 => array(
      '2015-21-11', 
      'credit#80', 
      'debit#30' 
      ), 

     3 => array(
     '2015-22-11', 
     'credit#80', 
     'debit#90' 
     ), 

     4 => array(
     '2015-22-11', 
     'credit#30', 
     'debit#80' 
     ), 

     5 => array(
     '2015-23-11', 
     'credit#65', 
     'debit#34' 
     ), 

    ); 

Моя цель состоит в том, чтобы изменить этот массив на что-то вроде этого, где одни и те же сроки стать одним из ключевых и согласованный массив, в котором находится дата становится его последующий массив.

array(

    '2015-21-11' => array(
     0 => array(
     '2015-21-11', 
     'credit#50', 
     'debit#70' 
     ), 

     1 => array(

     '2015-21-11', 
     'credit#80', 
     'debit#30' 
    ) 

    ), 


    '2015-22-11' => array(

    0 =>array(
     '2015-22-11', 

     'credit#80', 

     'debit#90' 

    ), 

    1 => array(

     '2015-22-11', 

     'credit#30', 

     'debit#80' 

    ), 

), 

'2015-23-11' => array(

    0 => array(

     '2015-23-11', 

     'credit#65', 

     'debit#34' 

    ) 

), 

);

В настоящее время я не могу группировать транзакции к определенной дате. Если я могу перестроить массив в моем предпочтительном массиве, это поможет мне показать транзакции определенного дня для моих пользователей.

ответ

0

Вы можете просто пройти через свой массив и изменить его так, как вам нравится в новом массиве. Это может быть не самый быстрый код, но его достаточно гибкий и понятный.

http://php.net/manual/en/control-structures.foreach.php

//create the array containing the newly sorted data 
$trans_sorted = []; 

//go through each element of our array 
foreach ($trans_arr as $trans) { 

    //check if entry with that date exists already 
    //$trans[0] is the date 
    If (!isset($trans_sorted[$trans[0]])) { 

     //if it does not exist yet, initialize an empty array 
     $trans_sorted[$trans[0]] = []; 
    } 

    //add our transaction to this date 
    $trans_sorted[$trans[0]][] = $trans; 
} 

//print_r($trans_sorted) 
+0

Хотя этот фрагмент кода может решить вопрос, [включая пояснения] (http://meta.stackexchange.com/questions/114762/explaining-entirely- код-based- ответы) из кода действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. Также попробуйте не толковать код с пояснительными комментариями, что уменьшает читаемость кода и объяснений! – Rizier123

+0

Спасибо. Он решил мою проблему –

+0

Я добавляю объяснение – user5542121

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