通过PHP中的嵌套阵列进行格式化结果



我试图通过循环动态生成sql语句,但我对如何使用HTML名称阵列进行了任何想法。假设$name$message是帖子数组...并且假设两者的长度都相等,则以下是我尝试的方法;

<?php 
 $name = array('name1','name2' );
 $mess= array('message1','message2' );
 $values = array($name,$mess);
  foreach ($values as $key){ 
    foreach ($key as $value){
     echo $value.","; 
      } 
     } 
 ?> 

输出是=

name1,name2,Message1,Message2,

,但我希望输出为=

(Name1,Messages1),(Name2,Messages2),

编辑:我只能对$values进行ACESS,我将无法确定在$values中加入多少个值。 就像它可以是

$values=array($name,$message,$phone);

我想要的结果将是

(name1,message1,phone1),(name2,message2,phone2)

我的解决方案是

步骤1:循环您的$values这将循环您数组的每个索引,例如$name

foreach($name as $index => $value) {
    // do something
}

步骤2:内部的循环值以(开头,这意味着将您的细节包裹在(

echo "(";

步骤3:循环父母数组

foreach($values as $key => $arr) {
    // do something
}

步骤4:在父母数组的循环中,根据您的索引

显示每个数据
echo $values[$key][$index];

$key代表您的parent数组的索引,而$index表示您的孩子数组的索引,如$name

此循环将创建

之类的数据
(name1,message1,phone1)

我只是添加此

if ($key < sizeof(array_keys($values))-1) {
  echo ",";
}

避免在最后一个循环之后添加,

此代码将动态显示您放置在$values

中的数组

所以您的代码就像这个

$name = array('name1','name2','name3','name4' );
$mess= array('message1','message2','message3','message4' );
$phone= array('phone1','phone2','phone3','phone4' );
$married= array('yes','no','yes','yes' );
$values = array($name,$mess,$phone);
foreach($name as $index => $value) {
    echo "(";
    foreach($values as $key => $arr) {
        echo $values[$key][$index];
        if ($key < sizeof(array_keys($values))-1) {
          echo ",";
        }
    }
    echo "),";
}

demo

或此

$name = array('name1','name2','name3','name4' );
$mess= array('message1','message2','message3','message4' );
$phone= array('phone1','phone2','phone3','phone4' );
$values = array($name,$mess,$phone);
foreach($name as $index => $value) {
    $join = array();
    foreach($values as $key => $arr) {
      $join[] = $values[$key][$index];
    }
    echo "(".implode(",",$join)."),";
}

demo

 $name = array('name1','name2' );
 $mess = array('message1','message2' );
 foreach ($names as $k => $v){
     echo "(".$v.",".$mess[$k]."),";
 }

尝试一下,您不需要两个foreach循环,仅使用foreach循环并将键传递给其他数组并获取值

$name = array('name1','name2' );
$mess= array('message1','message2' );
$values = array($name,$mess);
foreach ($name as $keys => $vals)
{ 
    echo "(".$vals.",".$mess[$keys]."),"; 
} 

demo

您可以使用arrap_map()函数以加入两个数组。这是参考http://php.net/manual/en/function.array-map.php

 <?php
     $name = array('name1','name2' );
     $mess= array('message1','message2' );
     $value = array_map(null, $name, $mess);
     print_r($value);
 ?>

最新更新