数据是一个数组数组,每个数组的大小都是两个元素 我试图将每个第一个元素重写为字符串'hello',但是在var_dump上只看到第一个字符'h'。
function replace() {
foreach($this->data as $record)
$this->data[$record[0]] = 'hello';
}
function print_array() {
foreach($this->data as $record)
var_dump($record[0]);
我怎么能写出整个单词?
答案 0 :(得分:0)
在您的示例中,$record[0]
包含值,而不是键值。
由于$this->data
是一个索引数组,您可以这样做:
function replace()
{
$count = count($this->data);
for ($i = 0; $i < $count; $i++) {
$this->data[$i][0] = 'Hello';
}
}
如果您想使用foreach
:
function replace()
{
foreach ($this->data as $key => $value) {
// We're not gonna use $value here, since it's just a copy
$this->data[$key][0] = 'Hello';
}
}
如果您想使用foreach
并引用(请注意&
- 在foreach中$value
之前签名):
function replace()
{
foreach ($this->data as &$value) {
// Now we can use $value directly, since it's a reference
$value[0] = 'Hello';
}
}
答案 1 :(得分:0)
在你的foreach循环中,声明$key
并在向数组中添加/打印元素时使用它。
class Test {
private $data = [
['test1', 'my1', 'name1'],
['test2', 'my2', 'name2']
];
private function replace() {
foreach ($this->data as $k=>$v) {
$this->data[$k][0] = 'hello';
}
}
public function print_array() {
$this->replace();
foreach($this->data as $k=>$v) {
echo $this->data[$k][0];
echo '<br>';
}
}
}
//Object
$new = new Test();
$new->print_array();
输出
hello
hello