2016-02-19 5 views
4

Я пытаюсь добавить ключевые имена в разобранном многомерный массивPHP - Добавить ключи в разобранном многомерный массив

Я это:

$datos = $_POST['dataGeneral']; 

    // Detecting "<" delimiter and PHP_EOL: 
    /* 
     1<1<Titulo Episodio<Descripción Episodio<http://www.google.com 
     1<2<Titulo Episodio 2<Descripción Episodio 2<http://www.google.com 
    */ 

    $data = explode(PHP_EOL, $datos); 
    $num = 0; 

    foreach($data as &$val){ 
     $exp = explode("<", $val); 
     $val = array_combine(range($num, $num+sizeof($exp)-1), $exp); 
     $num += sizeof($exp); 
    } 

    echo '<pre>CheckDelimiter:<br/>'; 
     print_r($data); 
    echo '</pre>'; 

Результат:

enter image description here

Эта работа хорошо, но я хочу, чтобы добавить ключи в массив элементов:

Это то, что я spected:

Array 
(
    [post-1] => Array 
     (
      [temporada] => 1 
      [episodio] => 1 
      [titulo] => Titulo Episodio 
      [descripcion] => Descripción Episodio 
      [link] => http://www.google.com 
     ) 

    [post-2] => Array 
     (
      [temporada] => 1 
      [episodio] => 2 
      [titulo] => Titulo Episodio 2 
      [descripcion] => Descripción Episodio 
      [link] => http://www.google.com 
     ) 

) 

Можете ли вы помочь мне, пожалуйста?

+2

быстрое примечание: вы не можете иметь два 'ключи Post' на том же уровне, и вы уже использовали функцию массива, что вам нужно для того, чтобы иметь этот ассоциативный ключ, 'array_combine', просто иметь массив жесткого кода, который будет объединен. – Ghost

+0

Можете ли вы показать нам, как выглядят почтовые данные? – Jaime

+0

foreach loop ... –

ответ

2

Поскольку у вас уже есть базовая настройка требуемых значений массива, просто используйте array_combine.

На этот раз используя ваши нужные клавиши assoctive:

$new_data = array(); 
foreach($data as $k => $val){ 
    $exp = explode("<", $val); 
    // $val = array_combine(range($num, $num+sizeof($exp)-1), $exp); 
    // instead of using numeric like above 
    $val = array_combine(array('temporada', 'episodio', 'titulo', 'descripcion', 'link'), $exp); 
    $new_data['post-' . ($k + 1)] = $val; 
} 
+0

Работайте отлично, @Ghost, спасибо. Я приму ответ в течение 5 минут :) – Ferrrmolina

+1

@Ferrrmolina уверен, рад, что это помогло – Ghost

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