Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-我可以使用字符串作为对象吗?_Php_Json - Fatal编程技术网

PHP-我可以使用字符串作为对象吗?

PHP-我可以使用字符串作为对象吗?,php,json,Php,Json,让我们假设我有以下JSON对象 $object = { "recipe": { "apples": 5 "flour": "2 lbs" "milk": "2 cartons" } } 现在考虑这个函数 private function get_quantity($ingredient) { $json = json_decode($object); return $json->recipe->{$ingredient}; } 如果我将m

让我们假设我有以下JSON对象

$object = 
{
  "recipe": {
    "apples": 5
    "flour": "2 lbs"
    "milk": "2 cartons"
  }
}

现在考虑这个函数

private function get_quantity($ingredient) {
  $json = json_decode($object);
  return $json->recipe->{$ingredient};
}
如果我将
milk
传递给函数,并希望得到
2箱
作为输出。这在PHP中可能吗?

是的,可能

有关参考,请参阅:

注意
$object
在您的函数中未定义,您也应该传入它:

private function get_quantity($object, $ingredient)
{
    $json = json_decode($object);

    return $json->recipe->{$ingredient};
}
是的,这是可能的

有关参考,请参阅:

注意
$object
在您的函数中未定义,您也应该传入它:

private function get_quantity($object, $ingredient)
{
    $json = json_decode($object);

    return $json->recipe->{$ingredient};
}

是的,你能做到。代码的唯一问题是语法。试试这个:

$object='1!'
{
“配方”:{
“苹果”:5,
“面粉”:“2磅”,
“牛奶”:“2箱”
}
}';
请注意,我添加了逗号,并用引号括起了JSON


该方法定义得很好,假设它可以看到
$object

是的,您可以这样做。代码的唯一问题是语法。试试这个:

<?php
    $object = 
    '{
      "recipe": {
        "apples": 5,
        "flour": "2 lbs",
        "milk": "2 cartons"
      }
    }';

    function get_quantity($object, $ingredient) {
      $json = json_decode($object);
      return $json->recipe->{$ingredient};
    }

    var_dump(get_quantity($object, 'milk'));
    ?>
$object='1!'
{
“配方”:{
“苹果”:5,
“面粉”:“2磅”,
“牛奶”:“2箱”
}
}';
请注意,我添加了逗号,并用引号括起了JSON

该方法定义良好,假设它可以看到
$object


<?php
    $object = 
    '{
      "recipe": {
        "apples": 5,
        "flour": "2 lbs",
        "milk": "2 cartons"
      }
    }';

    function get_quantity($object, $ingredient) {
      $json = json_decode($object);
      return $json->recipe->{$ingredient};
    }

    var_dump(get_quantity($object, 'milk'));
    ?>


是的,有可能。威尔,你试过了吗?我还建议使用isset check
return(isset($json->recipe->$component))$json->recipe->$Component:null @ Suphy PHP不是我的母语(我正在使用C++,但是我的任务集需要PHP)。我假设这可能是一种不正确的格式,但事先并没有尝试过它,所以我立即在堆栈上询问。在我自己处理它们之前,堆栈似乎已经成为我所有想法的目标。它是有效的,但你的JSON中有一个语法错误:在属性之间添加缺少的逗号,然后你就被设置为go(当然,JSON应该是一个字符串,所以用单引号括起来)@trincot确实,我知道,我只是当场写的。谢谢你的意见!是的,有可能。威尔,你试过的时候有用吗?我还建议使用isset check
return(isset($json->recipe->$component))$json->recipe->$Component:null @ Suphy PHP不是我的母语(我正在使用C++,但是我的任务集需要PHP)。我假设这可能是一种不正确的格式,但事先并没有尝试过它,所以我立即在堆栈上询问。在我自己处理它们之前,堆栈似乎已经成为我所有想法的目标。它是有效的,但你的JSON中有一个语法错误:在属性之间添加缺少的逗号,然后你就被设置为go(当然,JSON应该是一个字符串,所以用单引号括起来)@trincot确实,我知道,我只是当场写的。谢谢你的意见!假设我在构造函数中定义了$object,并通过
$this
引用它。谢谢你的回答,尽管如此:)@user2581649我不明白你为什么问这个问题。被接受的答案与您提出的问题完全相同,只是您刚才说的
$object
没有真正考虑到问题……让我们假设我在构造函数中定义了$object,并通过
$this
引用了它。谢谢你的回答,尽管如此:)@user2581649我不明白你为什么问这个问题。被接受的答案与您提出的问题完全相同,只是您刚才说的
$object
没有真正考虑到问题。。。