Как удалить символы из начала ключа массива multidm - PullRequest
0 голосов
/ 05 июля 2019

Как я могу удалить 5_, 6_, 7 _.... из каждого ключа в этом многомерном массиве?Мне нужен многомерный массив, который согласован, поэтому я могу обновить таблицу с помощью pdo.

array (size=10)
  0 => 
    array (size=12)
      '5_pay_begin' => string '2019-07-02' (length=10)
      '5_pay_end' => string '2019-07-02' (length=10)
      '5_pay_date' => string '2019-07-02' (length=10)
      '5_check_date' => string '2019-07-02' (length=10)
      '5_week_number' => string '27' (length=2)
      '5_quarter' => string '1' (length=1)
      '5_pay_of_the_month' => string '2' (length=1)
      '5_weeks_worked' => string '2' (length=1)
      '5_pers_frequency_code' => string '4' (length=1)
      '5_pers_report_ending' => string '2019-07-02' (length=10)
      '5_pers_period_begin' => string '2019-07-02' (length=10)
      '5_pers_period_end' => string '2019-07-02' (length=10)
  1 => 
    array (size=12)
      '6_pay_begin' => string '2019-07-02' (length=10)
      '6_pay_end' => string '2019-07-02' (length=10)
      '6_pay_date' => string '2019-07-02' (length=10)
      '6_check_date' => string '2019-07-02' (length=10)
      '6_week_number' => string '27' (length=2)
      '6_quarter' => string '1' (length=1)
      '6_pay_of_the_month' => string '1' (length=1)
      '6_weeks_worked' => string '2' (length=1)
      '6_pers_frequency_code' => string '7' (length=1)
      '6_pers_report_ending' => string '2019-07-02' (length=10)
      '6_pers_period_begin' => string '2019-07-02' (length=10)
      '6_pers_period_end' => string '2019-07-02' (length=10)
  2 => 
    array (size=12)
      '7_pay_begin' => string '2019-07-02' (length=10)
      '7_pay_end' => string '2019-07-02' (length=10)
      '7_pay_date' => string '2019-07-02' (length=10)
      '7_check_date' => string '2019-07-02' (length=10)
      '7_week_number' => string '27' (length=2)
      '7_quarter' => string '1' (length=1)
      '7_pay_of_the_month' => string '1' (length=1)
      '7_weeks_worked' => string '2' (length=1)
      '7_pers_frequency_code' => string '7' (length=1)
      '7_pers_report_ending' => string '2019-07-02' (length=10)
      '7_pers_period_begin' => string '2019-07-02' (length=10)
      '7_pers_period_end' => string '2019-07-02' (length=10)

Я пытался

       foreach ($output as &$ytt){
       foreach ($ytt as $key => $value)
       {
        //   echo $key . '<br>';
           //echo strstr($key, '_') . '<br>';
           $output[$key] = substr(strstr($key, '_'), strlen('_'));
       }
    }

Но это только создает массив внутри массива, но не 'T раздеть 5_.

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Вам нужно unset старый ключ.

<?php
foreach ($output as &$ytt) {
    foreach ($ytt as $key => $value) {
        $newKey = substr(strstr($key, '_'), strlen('_'));
        $ytt[$newKey] = $value;
        unset($ytt[$key]);
    }
}
0 голосов
/ 05 июля 2019

Другой способ сделать это с помощью preg_replace()

$result = [];
foreach($array as $k=>$v){
    foreach($v as $k1=>$v1){
        $k1 = preg_replace('/\d_/', '', $k1);
        $result[][$k1] = $v1;
    }
}
print_r($result);

РАБОЧИЙ ДЕМО: https://3v4l.org/blIP5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...