このような私のアレイのスクリーンショット。
Array(
[a] => val1
[b] =>
Array(
[c]=>68
)
)
変数を次のように取得するにはどうすればよいですか。
a = val1
c = 68
ループを使用してphpで?
このような私のアレイのスクリーンショット。
Array(
[a] => val1
[b] =>
Array(
[c]=>68
)
)
変数を次のように取得するにはどうすればよいですか。
a = val1
c = 68
ループを使用してphpで?
ご覧ください: http://us.php.net/manual/en/function.http-build-query.php
配列(連想)を取り、それをクエリ文字列に変換します。
$array = array('a' => 'val1', 'b' => array('c' => 68));
echo $array['a']; //val1
echo $array['b']['c']; //68
多次元配列のすべての値を出力するには:
function outputValue($array){
foreach($array as $key => $value){
if(is_array($value)){
outputValue($value);
continue;
}
echo "$key=$value" . PHP_EOL;
}
}
を使用して同じことを達成できますarray_walk_recursive()
:
array_walk_recursive($array, function($value, $key){echo "$key=$value" . PHP_EOL;});
最大1つの配列の深さがわかっている場合は、使用できます
foreach ($myArray as $key=>$val) {
if (is_array($val) {
foreach ($val as $key2=>$val2) {
print $key2.'='.$val2;
}
} else {
print $key.'='.$val;
}
}
それ以上になる可能性がある場合は、関数を使用します
function printArray($ar) {
foreach ($myArray as $key=>$val) {
if (is_array($val) {
printArray($val)
} else {
print $key.'='.$val;
}
}
}
printArray($myArray);
変数を抽出しようとしている場合は、次を試してください。
<?php
$array = array('a' => 'val1', 'b' => array('c' => 68));
$stack = array($array);
while (count($stack) !== 0) {
foreach ($stack as $k0 => $v0) {
foreach ($v0 as $k1 => $v1) {
if (is_array($v1)) {
$stack[] = $v1;
} else {
$$k1 = $v1;
}
unset($k1, $v1);
}
unset($stack[$k0], $k0, $v0);
}
}
unset($stack);
これにより、現在の変数スコープ内に$a
(val1) と(68) が作成されます。$c
PHP 関数extract()
http://php.net/manual/en/function.extract.phpを使用します
このような:
<?php
$var_array = array("color" => "blue",
"size" => "medium",
"shape" => "sphere");
extract($var_array);
echo "$color, $size, $shape\n";
?>
以下を使用します。
foreach ($x as $k=>$v)
配列はどこ$x
にありますか。これは、の各要素をループして、キーと値$x
を割り当てます。$k
$v
例として、配列を設定して表示するコード スニペットを次に示します。
$x = array('a'=>'val1', 'b'=>'val2');
foreach ($x as $k=>$v) {
echo "$k => $v<br />";
}
RecursiveIteratorIterator
+RecursiveArrayIterator
を使用できますArrayIterator
現在のデータの例
$data = array(
'a' => 'val1',
'b' => array('c'=>68)
);
解決
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator(new ArrayIterator($data)));
echo "<pre>";
foreach ($it as $k=> $var)
{
printf("%s=%s\n",$k,$var);
}
出力
a=val1
c=68