Sik*_*der 0 php arrays codeigniter
我想向数组添加新索引并在循环中向其添加值。
例如,我在循环中跟踪数组
[books] => Array
(
[0] => stdClass Object
(
[id] => 1
[user_id] => 5
[book_id] => 1
[date_issue] => 2016-07-24 00:00:00
[date_return] => 2016-07-25 00:00:00
)
[1] => stdClass Object
(
[id] => 5
[user_id] => 5
[book_id] => 2
[date_issue] => 2016-07-24 00:00:00
[date_return] => 2016-07-25 00:00:00
)
)
Run Code Online (Sandbox Code Playgroud)
这就是我得到它的方式
foreach ($query_books->result() as $key => $value) {
$result['books']= $query_books->result();
}
print_r($result);
Run Code Online (Sandbox Code Playgroud)
现在在每次迭代中我想添加一个新索引之后[date_return]我该怎么做请帮助
首先,您的foreach循环看起来并不一定需要循环。你没有用$key或做任何事情$value;它实际上只是$result['books']用 . 的结果反复覆盖$query_books->result()。你应该得到相同的结果:
$result['books'] = $query_books->result();
Run Code Online (Sandbox Code Playgroud)
完成后,您可以遍历它并添加新信息:
foreach ($result['books'] as $book) {
$book->new_index = 'new value';
}
print_r($result);
Run Code Online (Sandbox Code Playgroud)
中的项目$result['books']实际上不是数组;它们是 stdClass 对象。这就是为什么使用对象语法 ( $book->new_index) 而不是数组语法 ( $book['new_index'])来添加属性的原因。
从理论上讲,如果您确实有一个数组数组,则有必要在循环中使用引用(&$book而不是$book)foreach来修改它们,因为foreach在迭代时会创建每个项目的副本:
foreach ($result['books'] as &$book) { // use a reference
$book['new_index'] = 'new value';
}
unset($book); // unset the reference
print_r($result);
Run Code Online (Sandbox Code Playgroud)
这是不必要使用参考来修改对象的数组等你有,因为该对象标识符的副本foreach循环仍然指向同一个对象。您可以在PHP 手册中更详细地了解这一点。
| 归档时间: |
|
| 查看次数: |
5473 次 |
| 最近记录: |