我有一个数组如下
$posts = array(
0 => array('user' => 'Charlie', 'message' => 'First message'),
1 => array('user' => 'Charlie', 'message' => 'Second message'),
2 => array('user' => 'Charlie', 'message' => 'Third message TEXT!'),
3 => array('user' => 'Charlie', 'message' => 'Fourth message')
);
如果它在消息里面,我想用“NEXT”替换“TEXT”。 我怎么能这样做?
我试过
foreach ($posts as $r)
{
$r['message'] = str_replace('TEXT', 'NEXT', $r['message']);
}
但似乎没有工作。
答案 0 :(得分:5)
这是因为默认情况下foreach
使用数组元素的副本,而不是元素本身。您可以使用&
将其更改为参考:
foreach ($posts as &$r) {
答案 1 :(得分:3)
foreach ($posts as &$r)
{
$r['message'] = str_replace('TEXT', 'NEXT', $r['message']);
}
答案 2 :(得分:2)
foreach ($posts as &$r)
{
$r['message'] = str_replace('TEXT', 'NEXT', $r['message']);
}
&将导致$ r为reference to
该值,允许您在原始数组中更改它。在您的代码中,您正在修改副本。
答案 3 :(得分:2)
foreach ($posts as $key => $r)
{
$posts[$key]['message'] = str_replace('TEXT', 'NEXT', $r['message']);
}
答案 4 :(得分:1)
@Charlie Pigarelli:试试 -
for ($i = 0; $i < count($posts); $i++)
{
$posts[$i]['message'] = str_replace('TEXT', 'NEXT', $posts[$i]['message']);
}