簡體   English   中英

從用ajax發布的序列化數組創建多維數組

[英]Create multidimensional array from serialized array posted with ajax

我有一個包含三件事的列表,首先是整個列表的標題,然后用戶可以在每個類別下動態添加帶有問題的類別。

我需要將這些列表添加到我的數據庫中,並在發布時使用此數組(使用ajax和serializeArray ):

Array
(
    [0] => Array
        (
            [name] => lijsttitle
            [value] => Title
        )

    [1] => Array
        (
            [name] => category[]
            [value] => category 1
        )

    [2] => Array
        (
            [name] => question[]
            [value] => question 1
        )

    [3] => Array
        (
            [name] => question[]
            [value] => question 2
        )

    [4] => Array
        (
            [name] => question[]
            [value] => question 3
        )

    [5] => Array
        (
            [name] => category[]
            [value] => category 2
        )

    [6] => Array
        (
            [name] => question[]
            [value] => question 1
        )

    [7] => Array
        (
            [name] => question[]
            [value] => question 2
        )

)

所有問題和類別都已經按照正確的順序排列,但是我希望將它們組合在一起,如下所示:

Array
(
    [title] => Array
        (
            [value] => Title
        )

    [category 1] => Array
        (
            [question] => question 1
            [question] => question 2
            [question] => question 3
        )

    [category 2] => Array
        (
            [question] => question 1
            [question] => question 2
        )
)

或者,如果有更好的方法,則可能是另一種方法。

我這樣序列化表格:

$( ".lijstbutton" ).on( "click", function( event ) {
  event.preventDefault();
  url = 'includes/createlist.php';

  $lijst = $( '#lijstform' ).serializeArray();

  var posting = $.post(url, {lijst: $lijst});

    posting.done(function( data ) {
     $( ".lijstresult" ).empty().slideDown('fast').append( data );
   });
  });

為了顯示我當前的數組,我在createlist.php中有以下代碼:

echo '<pre>';
print_r($_POST['lijst']);
echo '</pre>';

最后,我需要鏈接到一個類別的所有問題以及所有鏈接到整個列表標題的所有類別。

因此,您可以有多個列表,每個列表及其類別以及這些類別下方的問題。

我會重新整理一下數據。 您不能在array多次使用'question'作為鍵。 $arr是發布的數據。

$store = [];

// pull off first arr element
$title = array_shift($arr);
// save title to store
$store['title'] = $title['name'];

$currCat = '';
foreach($arr as $a) {
  $val = $a['value'];
  // handle category
  if($a['name'] == 'category[]') {
    // save cat name
    $currCat = $val;
    // init questions array
    $store[$currCat] = [];
  }
  else {
    // add question to question array
    $store[$currCat][] = $val;
  }
}

print_r($store);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM