0

私はphpOOPでコード化されたプロジェクトで作業しています。自分自身にポストバックし、それらの値を取得して事前定義された配列形式に配置するフォームを作成しました。これは前のコーダーが行った方法であるため、事前定義済みと言います。

$plane->add(array('{"name":"Chris","age":"22"}','{"name":"Joyce","age":"45"}'));

配列から値を取得するとき、$_POSTそれは簡単だと思ったので、試してみました

$plane->add(array("{'name':$customerName,'age':$customerAge}"));

これはエラーを引き起こしていますが、変数の実際の名前を値ではなく文字列として渡しているようです。では、これらの値をその関数に渡すにはどうすればよいですか。$key=>valueその間、誰かがどのような配列であるかを説明できますか?配列は常に設定されていると思いましたが、ではありません$key:$value

4

5 に答える 5

2

他のコメントや回答が指摘しているように、データは JSON と呼ばれる形式でシリアル化されています。json_encode()json_decode( )を読むことをお勧めします

例を機能させるには、次のことを行う必要があります。

$data = array("name" => $customerName, "age" => $customerAge);
$plane->add(array(json_encode($data));
于 2012-12-04T21:36:34.937 に答える
0

それはjsonのように見えます: http ://sandbox.onlinephpfunctions.com/code/e1f358d408a53a8133d3d2e5876ef46876dff8c6

コード:

$array = json_decode('{"name":"Chris","age":"22"}');
print_r( $array );

そして、次のようにして配列をjsonに変換できます。

 $array = array("Customer" => "John");
 $arrayJson = json_encode( $array);

だからあなたの文脈にそれを置くために:

$array = array("Name"=>"Chris", "age" => 22);
$array2 = array("Name"=>"John", "age" => 26);
$plane->add(array( json_encode( $array),json_encode( $array2) );
于 2012-12-04T21:31:28.607 に答える
0

JSON の可能性があるように見えますが、そうではない可能性があります。

彼らが行ったように、すべてを引用するように注意してください。名前や年齢の周りに引用符はありません. 同じ種類の引用符を追加し、バックスラッシュを使用して、PHP がそれらを使用して文字列を終了しないようにしました。

$plane->add(array("{\"name\":\"$customerName\",\"age\":\"$customerAge\"}"));

ユーザーデータに注意してください.POSTデータから来ている場合は$customerName$customerAge一緒にハックするだけではなく、十分にテストされたエスケープ関数を使用して適切にエスケープする必要があります;)

于 2012-12-04T21:32:28.607 に答える
0

あなたの配列は、JSON でエンコードされた配列の配列のようです。使用してみてください:

$plane->add(array('{"name":"' . $nameVar . '","age":"' . $ageVar . '"}', ...));

以下を使用する場合:

echo json_encode(array('name' => 'Me', 'age' => '75'), array('name' => 'You', 'age' => '30'));

次の文字列が得られます。

[{"name":"Me","age":"75"},{"name":"You","age":"30"}]
于 2012-12-04T21:35:07.997 に答える
0

関数に渡そうとしているのは JSON ではないため、エラーが発生していると思いますが、関数は json 文字列の配列を想定していますが、手動で文字列を書き込もうとするのは、特定の文字やタイプエンコードが異なります。json_encodeを使用して json 文字列を取得することをお勧めします。

$plane->add(array(json_encode(array('name'=>$customerName,'age'=>$customerAge))));
于 2012-12-04T21:35:57.923 に答える