提取多维数组

时间:2018-07-20 16:33:49

标签: php

尽管我付出了很多努力,但仍无法找到合适的解决方案。这是问题所在:

所有数据均来自具有名为name[]gender[]age[]的文本字段的表单。

print_r($_POST)如下:

[name] => Array ([2] => Adam [6] => Suzy )
[gender] => Array ( [2] => male [6] => female )
[age] => Array ( [2] => 30 [6] => 25 )

我正在尝试这样迭代:

foreach ($array as $value)
{
echo $value['name'].$value['gender'].$value['age']."<br>";
}

结果应如下所示:

Adam-男性-30
Suzy-女-25

预先感谢您的帮助。

5 个答案:

答案 0 :(得分:2)

您很接近-但是创建数组的语法略有不同。

sql = """ SELECT * FROM table WHERE id = '00000201000012EB' """
conn.execute(sql)

您有两个选择-您可以创建一个包含两个项目的数组;每个人都有一个人的三个细节。这就是我所做的,并且很适合您显示的循环。

或者您可以具有三个平行的数组-一个带有两个名称,一个带有两个性别,一个带有两个年龄。 第二种方式更像:

$array = array (
   array('name' => 'Adam', 'gender' => 'male', 'age' => 30),
   array('name' => 'Suzy', 'gender' => 'female', 'age' => 25),
);
foreach ($array as $value)
{
   echo $value['name'].$value['gender'].$value['age']."<br>";
}

但是要从中获得想要的输出会更加困难。

$array = array(
  'name' => array('Adam','Suzy'),
  'gender' => array('male','female'),
  'age' =>  array(30,25)
);

答案 1 :(得分:1)

$_POST中的每个数组都具有相同的键集:

$_POST = array(
    'name' =>   array(2 => 'Adam', 6 => 'Suzy'),
    'gender' => array(2 => 'male', 6 => 'female'),
    'age' =>    array(2 => '30',   6 => '25')
)

您可以迭代内部数组之一,并使用其键访问其他数组中的相应值。

foreach ($_POST['name'] as $key => $name) {
    echo $name . $_POST['gender'][$key] . $_POST['age'][$key] . "<br>";
}

答案 2 :(得分:0)

foreach ($array as $id=>$value)
{
    echo $value . $gender[$id] . $age[$id] . "<br>";
}

答案 3 :(得分:0)

首先,我修改了您在问题上发布的数组结构,因为它对php中的无效无效。然后,如果我没有误解您的要求,那么您就拥有这个数组结构,并且您想将其存档-

<?php
$array = array (
    'name'=>array('Adam', 'Suzy'),
    'gender'=>array('male', 'female'),
    'age'=>array(30, 25)
);
$i=0;
foreach ($array as $key=>$value)
{   
    if($i==2)break;
    echo $array['name'][$i]."-".$array['gender'][$i] ."-". $array['age'][$i] ."<br>";
    $i++;
}
?>

OR

<?php
$array = array (
    'name'=>array('Adam', 'Suzy'),
    'gender'=>array('male', 'female'),
    'age'=>array(30, 25)
);

foreach ($array['name'] as $index=>$name)
{   
    echo $name."-".$array['gender'][$index] ."-". $array['age'][$index] ."\n";
}
?>

程序输出:

Adam-male-30
Suzy-female-25

演示: https://eval.in/1039966

答案 4 :(得分:0)

@晴 Veeeery接近我2003年使用的那位先生。这是有效的解决方案:

<?
echo "<pre>";
print_r($_POST);
echo "</pre>";


foreach ($_POST['name'] as $key => $name) {
    echo "NAME=".$_POST['name'][$key]."gender=" . $_POST['gender'][$key] . "AGE=".$_POST['age'][$key] . "<br>";
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>test</title>
</head>
<body>
WOKSING SOLUTION:
<code>echo "<pre>";
print_r($_POST);
echo "</pre>";


foreach ($_POST['name'] as $key => $name) {
    echo "NAME=".$_POST['nemae'][$key]."gender=" . $_POST['gender'][$key] . "AGE=".$_POST['age'][$key] . "<br>";
}
</code>
<form method="post">
<input type="text" name="name[]" />
<input type="text" name="gender[]"/>
<input type="text" name="age[]"/>
<br />
<input type="text" name="name[]" />
<input type="text" name="gender[]"/>
<input type="text" name="age[]"/>

<input type="submit" />
</form>
</body>
</html>