如何在php中获取多维混合数组?
How to fetch multi-dimensional mix array in php?
我将这个数组存储在一个变量中:-
Array (
[0] => Array (
[date] => 06/01/2016 - 06/30/2016
[0] => Array ( [0] => 1 [1] => 34 [2] => 2 [3] => 55 )
[1] => Array ( [0] => 2 [1] => 55 [2] => 55 [3] => 100 )
[2] => Array ( [0] => 3 [1] => 60 [2] => 100 [3] => 500 )
)
)
这是我的打印代码:
foreach($tables as $table)
{
foreach($table as $tier)
{
echo $tier[0]."<br>";
echo $tier[1]."<br>";
echo $tier[2]."<br>";
echo $tier[3]."<br>";
}
}
这是打印的内容:
0
6
/
0
1
34
2
55
2
55
55
100
3
60
100
500
这就是我所期待的:
1
34
2
55
2
55
55
100
3
60
100
500
如何使用 foreach()
获得想要的结果?
试试这个:排除@Jon Stirling 建议的日期。
foreach($tables as $table){
foreach($table as $k => $tier){
if($k !== 'date')
echo $tier[0]."<br/>".$tier[1]."<br/>".$tier[2]."<br/>".$tier[3]."<br/>";
}
}
新版本来了,之前的版本在 if
条件下添加 !==
后效果很好。
$tables = array(
array (
'date' => "06/01/2016 - 06/30/2016",
array ( 1, 34, 2, 55 ),
array ( 2, 55, 55, 100 ),
array ( 3, 60, 100, 500 )
)
);
foreach($tables as $table){
foreach($table as $k => $tier){
if(!is_array($tier))
continue;
foreach($tier as $val)
echo $val."\n";
}
}
已更新问题。
问题是 date
字段被解释为层。像这样跳过非数字层:
foreach ($tables as $table)
{
foreach ($table as $index => $tier)
{
if (!is_numeric($index))
continue;
echo $tier[0]."<br>";
echo $tier[1]."<br>";
echo $tier[2]."<br>";
echo $tier[3]."<br>";
}
}
下面是这个工作的一个例子:
php > $tables = array(0 => array('date' => '06/01/2016 - 06/30/2016', 0 => array(1, 34, 2, 55), 1 => array(2, 55, 55, 100), 2 => array(3, 60, 100, 500)));
php > foreach ($tables as $table)
php > {
php { foreach ($table as $index => $tier)
php { {
php { if (!is_numeric($index))
php { continue;
php {
php { echo $tier[0]."<br>";
php { echo $tier[1]."<br>";
php { echo $tier[2]."<br>";
php { echo $tier[3]."<br>";
php { }
php { }
1<br>34<br>2<br>55<br>2<br>55<br>55<br>100<br>3<br>60<br>100<br>500<br>
php >
foreach($tables as $table)
{
foreach($table as $key => $tier)
{
if ($key !== 'date')
{
echo $tier[0]."<br>";
echo $tier[1]."<br>";
echo $tier[2]."<br>";
echo $tier[3]."<br>";
}
}
}
您的代码非常接近。
我假设你的数组只有 0 个索引,所以直接在这里调用那个数组并传递数组键 date
use !== when compare "date"
don't use != ,it will be invalid because "date" will be convert to int 0
so will be equal in "date" and 0
foreach ($table[0] as $k=>$tier) {
if($k !== 'date'){
echo $tier[0]."<br>";
echo $tier[1]."<br>";
echo $tier[2]."<br>";
echo $tier[3]."<br>";
}
}
更新@RivnatNasah 的回答
foreach ($tables as $table) {
foreach ($table as $key => $values){
if ($key !== 'date') {
foreach ($values as $value) {
echo $value . PHP_EOL;
}
}
}
}
我将这个数组存储在一个变量中:-
Array (
[0] => Array (
[date] => 06/01/2016 - 06/30/2016
[0] => Array ( [0] => 1 [1] => 34 [2] => 2 [3] => 55 )
[1] => Array ( [0] => 2 [1] => 55 [2] => 55 [3] => 100 )
[2] => Array ( [0] => 3 [1] => 60 [2] => 100 [3] => 500 )
)
)
这是我的打印代码:
foreach($tables as $table)
{
foreach($table as $tier)
{
echo $tier[0]."<br>";
echo $tier[1]."<br>";
echo $tier[2]."<br>";
echo $tier[3]."<br>";
}
}
这是打印的内容:
0
6
/
0
1
34
2
55
2
55
55
100
3
60
100
500
这就是我所期待的:
1
34
2
55
2
55
55
100
3
60
100
500
如何使用 foreach()
获得想要的结果?
试试这个:排除@Jon Stirling 建议的日期。
foreach($tables as $table){
foreach($table as $k => $tier){
if($k !== 'date')
echo $tier[0]."<br/>".$tier[1]."<br/>".$tier[2]."<br/>".$tier[3]."<br/>";
}
}
新版本来了,之前的版本在 if
条件下添加 !==
后效果很好。
$tables = array(
array (
'date' => "06/01/2016 - 06/30/2016",
array ( 1, 34, 2, 55 ),
array ( 2, 55, 55, 100 ),
array ( 3, 60, 100, 500 )
)
);
foreach($tables as $table){
foreach($table as $k => $tier){
if(!is_array($tier))
continue;
foreach($tier as $val)
echo $val."\n";
}
}
已更新问题。
问题是 date
字段被解释为层。像这样跳过非数字层:
foreach ($tables as $table)
{
foreach ($table as $index => $tier)
{
if (!is_numeric($index))
continue;
echo $tier[0]."<br>";
echo $tier[1]."<br>";
echo $tier[2]."<br>";
echo $tier[3]."<br>";
}
}
下面是这个工作的一个例子:
php > $tables = array(0 => array('date' => '06/01/2016 - 06/30/2016', 0 => array(1, 34, 2, 55), 1 => array(2, 55, 55, 100), 2 => array(3, 60, 100, 500)));
php > foreach ($tables as $table)
php > {
php { foreach ($table as $index => $tier)
php { {
php { if (!is_numeric($index))
php { continue;
php {
php { echo $tier[0]."<br>";
php { echo $tier[1]."<br>";
php { echo $tier[2]."<br>";
php { echo $tier[3]."<br>";
php { }
php { }
1<br>34<br>2<br>55<br>2<br>55<br>55<br>100<br>3<br>60<br>100<br>500<br>
php >
foreach($tables as $table)
{
foreach($table as $key => $tier)
{
if ($key !== 'date')
{
echo $tier[0]."<br>";
echo $tier[1]."<br>";
echo $tier[2]."<br>";
echo $tier[3]."<br>";
}
}
}
您的代码非常接近。
我假设你的数组只有 0 个索引,所以直接在这里调用那个数组并传递数组键 date
use !== when compare "date"
don't use != ,it will be invalid because "date" will be convert to int
0
so will be equal in "date" and 0
foreach ($table[0] as $k=>$tier) {
if($k !== 'date'){
echo $tier[0]."<br>";
echo $tier[1]."<br>";
echo $tier[2]."<br>";
echo $tier[3]."<br>";
}
}
更新@RivnatNasah 的回答
foreach ($tables as $table) {
foreach ($table as $key => $values){
if ($key !== 'date') {
foreach ($values as $value) {
echo $value . PHP_EOL;
}
}
}
}