0

次のような配列内で、value1、value2、または value3 を参照する必要があります。

a:3:{i:0;s:4:"value1";i:1;s:5:"value2";i:2;s:4:"value3";}

値 1、2、または 3 は実際には ID であり$item->ID、ドロップダウン メニューで選択した状態で保存できるように、それらを an に設定する方法を見つける必要があります。また、配列は無限です-必ずしもそうではありませんa:3(繰り返し可能な選択ボックスを作成しようとしています。)

基本的に、配列内の 3 項目ごとに変数参照を設定する必要があります。

これについて何か助けていただければ幸いです。あなたがおそらく言うことができるように、私はphpでかなり新しいです。

編集:私はこれをひどく説明したと思います。基本的にコードを機能させるには、$meta を $item-ID と等しくする必要があります。現在、meta は a:1:{i:0;s:3:"202";} に等しく、$item-ID は202. wordpress からの値であり、既に存在する情報にアクセスしているため、値またはシリアル化されているという事実を変更できません。

foreach($items as $item) {
echo '<option value="'.$item->ID.'"',$meta == $item->ID ? ' selected="selected"' : '','>'.$item->display_name.'</option>';
                }
4

3 に答える 3

0
$x = unserialize($your_array);
foreach ($x as $key => &$val) {
    if ($key % 3 == 0) {
        $val = $item->ID;
    }
}
于 2013-06-12T13:01:35.777 に答える
0

もし私があなただったら、通常の配列にシリアル化を解除し、必要なものを変更してから再シリアル化します

次のように:

$newArray = unserialize('a:3:{i:0;s:6:"value1";i:1;s:6:"value2";i:2;s:6:"value3";}');
foreach($newArray as something){} //or whatever else you want to do on the normal array.
$serializeArray = serialize ($newArray);

基本的に私の意見では、シリアル化された配列を操作するのは間違いです..

于 2013-06-12T13:04:42.290 に答える
0

これは、シリアル化された配列表現のように見えます。しかし、それには誤りがあります。文字列の長さs:4またはs:5間違っています。これを手動で修正するのは本当にハックですが、ここに動作するコードがs:6あります。文字列が 6 文字になるように設定しました。

$a = unserialize('a:3:{i:0;s:6:"value1";i:1;s:6:"value2";i:2;s:6:"value3";}');
var_dump($a);

出力:

array(3) {
  [0] =>
  string(6) "value1"
  [1] =>
  string(6) "value2"
  [2] =>
  string(6) "value3"
}

これで配列ができました。しかし問題は、どうやってその文字列を取得できるかということです。正確には何をしているのですか?

PHP で配列を定義する方法を探している場合は、次の例を使用します。

$array = array ('value1', 'value2', 'value3');

配列を定義する方法は他にもあります。配列についてはマニュアルを読んでください

于 2013-06-12T13:06:03.380 に答える