PHP如何正确遍历neo4j返回的Map列表/数组以提取所需字段值
解决方法
Laudis Neo4j PHP 客户端执行Cypher查询后返回的结果集是可直接遍历的集合对象,不需要做JSON解码,你可以按以下两种方式遍历取字段:
方式1:直接遍历结果集(推荐)
<?php require ('vendor/autoload.php'); $client = Laudis\Neo4j\ClientBuilder::create() ->addHttpConnection('backup', 'http://neo4j:foodisgood56@localhost') ->addBoltConnection('default', 'bolt://neo4j:foodisgood56@localhost') ->setDefaultConnection('default') ->build(); $records = $client->run('MATCH (n:Dept1) RETURN n LIMIT 25'); foreach ($records as $record) { // 提取查询返回的别名为n的节点属性数组 $deptInfo = $record->get('n'); // 输出对应字段 echo '部门编号:' . $deptInfo['deptno'] . PHP_EOL; echo '部门名称:' . $deptInfo['dname'] . PHP_EOL; echo '所在位置:' . $deptInfo['location'] . PHP_EOL; echo '--------------------------' . PHP_EOL; }
方式2:先转成普通数组再遍历
如果习惯用PHP原生数组处理,可调用集合的toArray()方法转换后再操作:
$records = $client->run('MATCH (n:Dept1) RETURN n LIMIT 25'); $recordArray = $records->toArray(); foreach ($recordArray as $item) { $deptInfo = $item->get('n'); echo '部门编号:' . $deptInfo['deptno'] . PHP_EOL; echo '部门名称:' . $deptInfo['dname'] . PHP_EOL; echo '所在位置:' . $deptInfo['location'] . PHP_EOL; echo '--------------------------' . PHP_EOL; }
注意
你之前注释的代码无法生效的原因是$client->run()返回的不是JSON字符串,不需要调用json_decode处理,直接遍历结果集即可。
内容的提问来源于stack exchange,提问作者Nancy Moore
相关产品推荐
相关产品推荐

