我想知道如何连接 [und] [0] [value] 。 我不想每次都写[und] [0] [value]。所以我这样做了:
<?php
$und_value = $load->field_testimonial_location['und'][0]['value'];
$query = db_select('node','n');
$query->fields('n',array('nid'));
$query->condition('n.type','testimonial','=');
$result = $testimonial_query->execute();
while($fetch = $result->fetchObject()){
$load = node_load($fetch->nid);
// $location = $load->field_testimonial_location['und'][0]['value'];
$location = $load->field_testimonial_location.$und_value;
echo $location;
}
但它不起作用。它输出数组数组那么有这个问题的idia吗?我能怎么做? Full code here
答案 0 :(得分:0)
为什么不制作一些将节点字段作为参数并返回其值
的函数result[5] = '5-B';
result[6] = '6-b';
// etc...
类似的东西(未经测试)。
但如果您不想使用函数,请尝试使用大括号,如:
function field_value($field){
return $field['und'][0]['value'];
}
这应该有用......
答案 1 :(得分:0)
扩展MilanG发布的答案,使功能更通用
function field_value($field, $index = 0 ){
return $field['und'][$index]['value'];
}
有时候你有多个值字段,在这种情况下你也必须传递值的索引。例如
$field['und'][3]['value'];
答案 2 :(得分:0)
请不要使用这些缩写,它们不适合所有情况,最终会破坏您的代码。
相反,已经有一个工具可以使用更简单的语法创建自定义代码:Entity Metadata Wrapper。
基本上,而不是
$node = node_load($nid);
$field_value = $node->field_name['und'][0]['value'];
然后,您可以执行类似的操作
$node = node_load($nid);
$node_wrapper = entity_metadata_wrapper('node', $node);
$field_value = $node_wrapper->field_name->value();
使用节点包装器,您还可以设置节点的值,它更容易,甚至可以在多语言环境中工作,无需先获取语言($node->language
)或使用常量(LANGUAGE_NONE
)
在我的自定义模块中,我经常使用$node
作为节点对象,使用$enode
作为包装器对象。它同样简短,仍然知道我正在研究的对象。