dqcuq4138 2017-04-24 11:53
浏览 166
已采纳

使用字符串访问对象的数组属性

I tried to access an object property which has array form using string variable but not able do so when the string contains index selection. Take a look at this example.. what i was tring to do is to use $access3 like string

$dummy = new stdClass();
$dummy->testNormal = 'itemNormal';
$dummy->testArray = array('item1', 'item2');

$access1 = 'testNormal';
$access2 = 'testArray';
$access3 = 'testArray[0]';

echo 'try access1: ' . $dummy->{$access1} . '<br />';
echo 'try access2: ' . $dummy->{$access2}[0] . '<br />';
echo 'try access3: ' . $dummy->{$access3} . '<br />';
echo 'try direct: ' . $dummy->testArray[0] . '<br />';

The above code will return

try access1: itemNormal
try access2: item1
--- ERROR MESSAGE -- 
try access3:        <-- does not contain anything because of error, my expectation is it will be "item1"
try direct: item1

Is this impossible with php?

  • 写回答

1条回答 默认 最新

  • duanfu7004 2017-04-24 13:31
    关注
    $access_handler = explode('[', $access3);
    // get array name
    $array_name = $access_handler[0];
    // get array index
    $array_index = substr($access_handler[1], 0, -1);
    // call the property
    echo $dummy->$array_name[$array_index];
    

    you might create function for this. Otherwise you would have to use eval to evaluate your string, but that is not recommended. Also there are many ways to separate index from array name and then run it as in this example

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序