PHP-递归迭代json对象

PHP-递归迭代json对象,php,json,object,Php,Json,Object,我需要在PHP中迭代对象,并对该对象中的每个值应用特定函数。 这些对象是绝对任意的。它们可以包括变量、其他对象、数组、对象数组等等 有没有一种通用的方法可以做到这一点?如果是,如何进行 用法示例: RESTful API,接收JSON格式的请求。 json_decode()在请求体上执行并创建任意对象。 例如,现在最好在进一步验证之前对该对象中的每个值执行mysqli_real_escape_string() 对象示例: { "_id": "551a78c500eed4fa853870fc"

我需要在PHP中迭代对象,并对该对象中的每个值应用特定函数。 这些对象是绝对任意的。它们可以包括变量、其他对象、数组、对象数组等等

有没有一种通用的方法可以做到这一点?如果是,如何进行

用法示例: RESTful API,接收JSON格式的请求。 json_decode()在请求体上执行并创建任意对象。 例如,现在最好在进一步验证之前对该对象中的每个值执行mysqli_real_escape_string()

对象示例:

{
  "_id": "551a78c500eed4fa853870fc",
  "index": 0,
  "guid": "f35a0b22-05b3-4f07-a3b5-1a319a663200",
  "isActive": false,
  "balance": "$3,312.76",
  "age": 33,
  "name": "Wolf Oconnor",
  "gender": "male",
  "company": "CHORIZON",
  "email": "wolfoconnor@chorizon.com",
  "phone": "+1 (958) 479-2837",
  "address": "696 Moore Street, Coaldale, Kansas, 9597",
  "registered": "2015-01-20T03:39:28 -02:00",
  "latitude": 15.764928,
  "longitude": -125.084813,
  "tags": [
    "id",
    "nulla",
    "tempor",
    "do",
    "nulla",
    "laboris",
    "consequat"
  ],
  "friends": [
    {
      "id": 0,
      "name": "Casey Dominguez"
    },
    {
      "id": 1,
      "name": "Morton Rich"
    },
    {
      "id": 2,
      "name": "Marla Parsons"
    }
  ],
  "greeting": "Hello, Wolf Oconnor! You have 3 unread messages."
}
然后像这样使用它:

$decodedObject = RecursiveStuff($decodedObject, function($value) 
{
   return escapesomething($value); // do something with value here
});
您只需传递函数名,如下所示:

$decodedObject = RecursiveStuff($decodedObject, 'mysqli_real_escape_string');

如果只需要遍历数据,而不需要对其第二个参数重新编码,
$assoc
将使其返回关联数组。从那以后,你所追求的应该很好

$data = json_decode($source_object);
$success = array_walk_recursive($data, "my_validate");

function my_validate($value, $key){
    //Do validation.
}

你能给我们举个例子吗?这样肯定会更容易。对象太长,无法在注释框中填充:(基本上,它们非常大,我需要应用一些通用的验证。如果您在SQL代码中使用绑定变量,那么使用
mysqli\u real\u escape\u string()
将是不必要的。您会发现错误:…
foreach($value as&$prop){$prop=RecursiveStuff($prop,$callable);
。。。
$data = json_decode($source_object);
$success = array_walk_recursive($data, "my_validate");

function my_validate($value, $key){
    //Do validation.
}