PHP数组 - 如何将数组转换为对象?

7
我对PHP还不太熟悉,请多包涵。
我遇到了这个错误: 注意:在这一行上尝试获取非对象属性。
echo (
            "<tr>".
            "<td>".$row->last_name.     "</td>".
            "<td>".$row->first_name.    "</td>".
            "<td>".$row->phone_no.      "</td>".
            "<td>".$row->date_of_birth. "</td>".
            "<td>".$row->membership.    "</td>".
            "</tr></table>");

我在我的函数上使用了print_r,并得到了以下结果:
Array
(
    [0] => Array
    (
        [0] => Lee
        [last_name] => Lee
        [1] => Lian
        [first_name] => Lian
        [2] => 39025823
        [phone_no] => 39025823
        [3] => 1967-09-19
        [date_of_birth] => 1967-09-19
        [4] => T
        [membership] => T
        [5] =>
        [status] =>
        [6] => 0
        [room_no] => 0
    )
)

所以数组中有元素。
实际代码如下:
foreach($array as $row)
    {
            echo (
            "<tr>".
            "<td>".$row->last_name.     "</td>".
            "<td>".$row->first_name.    "</td>".
            "<td>".$row->phone_no.      "</td>".
            "<td>".$row->date_of_birth. "</td>".
            "<td>".$row->membership.    "</td>".
            "</tr></table>");
    }

我在想,如何将一个数组转换成对象呢?也许这会是我的解决方案。

如果你在想“如何将数组转换为对象”,为什么不直接给标题起成那个样子呢? - Your Common Sense
3个回答

16

我在想,如何把一个数组转换成对象呢?也许这是我的解决方案。

确实,那将是其中一种解决方案。

$row = (object) $row;
另一种方法是使用正确的数据类型语法,例如数组。
而不是
$row->last_name

你应该使用

$row['last_name']

谢谢!顺便问一下,你知道我怎么把这些信息转化成表格吗?我想在每个名字之间放置一个按钮。如果用户点击它,它将把该用户的信息传递到另一页。 - Aero Chocolate

5

由于你正在使用数组,因此应该使用[]来访问数组的项:

echo $row['last_name'];

使用正确的语法,错误会自动消失 ;-)


不过,如果你真的想将一个数组转换为对象(虽然在这种特定情况下我不确定为什么要这样做),可以使用以下代码:

$row = (object)$row;
echo $row->last_name;

这是手册中相关的部分:类型转换。请参见Type Casting

5
尝试这个...
foreach($array as $row)
{
    echo (
        "<tr>".
        "<td>".$row['last_name'].     "</td>".
        "<td>".$row['first_name'].    "</td>".
        "<td>".$row['phone_no'].      "</td>".
        "<td>".$row['date_of_birth']. "</td>".
        "<td>".$row['membership'].    "</td>".
        "</tr></table>");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接