繁体   English   中英

打印出数组的索引以及每个索引的值

[英]print out index of array, as well as value of each index

我有数组$ student []

<?php
$student['id'] = "10402";
$student['hnumber'] = "H030502";
$student['name'] = "Larry Wayne";

print_r($student);
?>

它输出:

Array ( [id] => 10402 [hnumber] => H030502 [name] => Larry Wayne )

我要完成的工作是将值存储到数组中,然后将其插入数据库表中。

因此,insert语句将是:

$q = "insert into table (id, hnumber, name) VALUES ('10401', 'H030502', 'Larry Wayne')";

我想使用一个数组将所有值存储到其中,并用其表字段名称标记每个值,因为它将要在其中插入数据的大约25个字段。

如果有更好的方法可以做到这一点,我全神贯注。

提前致谢。

假设您正在从其他来源培养学生,那么这样的事情怎么样?

// data from an external source
$students = array(
    // student 1
    array(
        123,
        'h123',
        'John Smith',
    ),
    // student 2
    array(
        456,
        'h456',
        'Jane Smith',
    ),
    // ... and so on        
);

$values = array();
foreach ( $students as $student )
{
    // @todo, make sure to sanitize values!!!
    $values[] = sprintf('(%s)', implode(', ', $student));
}
// build query
$query = 'INSERT INTO `table` (`id`, `hnumber`, `name`) VALUES '.implode(', ', $values);

请注意,上面的代码是“伪”或一个想法。 确保清理值:)

编辑:还有一件事。 如果您想要简单的修复,最好是上面的代码,最好用于某种简单的数据导入。 更好的方法是创建一个处理所有这些逻辑的Student类。

我只想评论David的示例,因为这几乎是我要建议的事情,但是很遗憾,我无法在注释中添加代码。 David从最初的问题中忘了一件事,就是您想将表字段用作数组的一部分-在本示例中,将其用作键字段。 在foreach中,您可以将数组拆分为键/值对,然后稍后在代码本身中使用它们。

<?php
    $student['id'] = "10402";
    $student['hnumber'] = "H030502";
    $student['name'] = "Larry Wayne";
    $queryFields = array();
    $queryValues = array();
    $queryString = '';

    foreach($student as $key => $value){
        $queryFields[] = '`'.$key.'`';
        $queryValues[] = $value;
    }

    $queryString = 'INSERT INTO `table` ('.implode(',', $queryFields).') VALUES ('.implode(',', $queryValues).')';
    //run_query($queryString)
?>

由于我不是100%熟悉CodeIgniter,因此很有可能会存在一种将数组和/或对象映射到某种ActiveRecord实现的方法。 但是,由于您只是在寻找一种本身生成查询字符串的方法,因此可以解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM