【问题标题】:Formatting arrays specifically in PHP专门在 PHP 中格式化数组
【发布时间】:2017-07-05 07:02:23
【问题描述】:

我的网站上有以下 PHP 代码:

<?php
    $FirstName = array("Jacob", "Noah", "Frank");
    $LastName = array("Collins", "Little", "Allen");
    $BirthDay = array(19, 31, 06);
?>

我希望它像这样输出:

("Jacob", "Collins", 19), ("Noah", "Little", 31), ("Frank", "Allen", 06)

对于一个 SQL 字符串,它将是:

INSERT INTO Users (FirstName, LastName, BirthDay) VALUES ("Jacob", "Collins", 19), ("Noah", "Little", 31), ("Frank", "Allen", 06);

我对 PHP 还是很陌生(昨天才开始),我想知道我该怎么做。

谢谢。

【问题讨论】:

  • 将是所有数组的计数将相同
  • 你也应该用逗号分隔括号:(...), (...)
  • 每个字段都是必需的(名字、姓氏、生日),所以每个数组的第一个元素都会匹配,所以它不会以某种方式结束("Noah", "Collins", 06)
  • 据我所知,您正在尝试通过连接字符串来构建 INSERT 查询。即使您只是 php 或编程本身的新手,请理解这是危险的! (en.wikipedia.org/wiki/SQL_injection) 请查看参数化查询 :)

标签: php mysql arrays mysqli


【解决方案1】:

简单地说,如果您的 $FirstName$LastName$BirthDay 数量相同,

使用for 循环和array_push 你可以这样做:

$data = array();
$count = count($FirstName);

for($i = 0; $i < $count; $i++ ){

    $insert = [$FirstName[$i],$LastName[$i], $BirthDay[$i]];
    array_push($data,$insert);

}

$data 为您提供格式化数组。

【讨论】:

  • 如何回显$data
  • 使用print_r()等函数
【解决方案2】:

你可以使用for循环来做

<?php
$FirstName = array("Jacob", "Noah", "Frank");
    $LastName = array("Collins", "Little", "Allen");
    $BirthDay = array(19, 31, 06);
$length = count($FirstName);
for($x=0;$x<$length;$x++)
{
    $custom = array();
    $f = $FirstName[$x];
    $l = $LastName[$x];
    $b = $BirthDay[$x];
    array_push($custom,$f);
    array_push($custom,$l);
    array_push($custom,$b);
    print_r($custom);
}
?>

希望这会有所帮助..!

【讨论】:

  • 如果计数相同,您可以使用上述方法@JacobCollins
【解决方案3】:

由于您是 PHP 新手,所以我们还没有进入课程。

在不破坏或修改您存储的数据的情况下,一种简单的方法是使用多维数组,如下所示:

$myArray = array(
  array( "Jacob", "Collins", 19 ),
  array( "Noah", "Little", 31 )
);

// Displays "Noah little 31"
echo $myArray[1][0]." ".$myArray[1][1]." ".$myArray[1][2];

foreach ($myArray as $row)
{
    //concatenate this to your query string.
    $assembledQuery = "(\"$row[0]\", \"$row[1]\", $row[2])";
}

但是,请记住,这种构建查询的方式非常危险!

【讨论】:

    【解决方案4】:

    当生日或姓氏不在数组中时,以下代码可为您提供帮助

        $data = [];
        $total = count($FirstName);
        for($i = 0;$i < $total;$i++) {
            $tmp = [];
            $tmp[] = (isset($FirstName[$i]))? $FirstName[$i] : "";
            $tmp[] = (isset($LastName[$i]))? $LastName[$i] : "";
            $tmp[] = (isset($BirthDay[$i]))? $BirthDay[$i] : "";
            $data[] = $tmp;
        }
    
        // $data is array what you want i have just dump the $data 
    
        echo "<pre>";
        var_dump($data);
    

    【讨论】:

      猜你喜欢
      • 2021-08-03
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      相关资源
      最近更新 更多