Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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 如何在drupal中连接变量_Php_Drupal_Drupal Modules_Custom Post Type - Fatal编程技术网

Php 如何在drupal中连接变量

Php 如何在drupal中连接变量,php,drupal,drupal-modules,custom-post-type,Php,Drupal,Drupal Modules,Custom Post Type,我想知道如何连接[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.ty

我想知道如何连接[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;
   }

为什么不做一些函数,将节点字段作为参数并返回其值

function field_value($field){
  return $field['und'][0]['value'];
}
类似的东西(未测试)

但如果您不想使用函数,请尝试使用大括号,如:

$location = $load->{field_testimonial_location.$und_value};

这应该行…

为什么不做一些函数,将节点字段作为参数并返回其值

function field_value($field){
  return $field['und'][0]['value'];
}
类似的东西(未测试)

但如果您不想使用函数,请尝试使用大括号,如:

$location = $load->{field_testimonial_location.$und_value};

这应该有用…

扩展MilanG发布的答案,使函数更通用

函数字段\值($field,$index=0){
返回$field['und'][$index]['value'];
}

有时,您有多个值字段,在这种情况下,您还必须传递值的索引。比如说


$field['und'][3]['value']

扩展米朗发布的答案,使函数更通用

函数字段\值($field,$index=0){
返回$field['und'][$index]['value'];
}

有时,您有多个值字段,在这种情况下,您还必须传递值的索引。比如说


$field['und'][3]['value']

请不要使用此类缩写,它们不会适合所有情况,最终会破坏您的代码

相反,已经有一个工具可以使用更简单的语法创建自定义代码:

基本上,而不是

$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\u NONE


在我的自定义模块中,我经常对节点对象使用
$node
,对包装器对象使用
$enode
。它同样简短,并且仍然知道我在处理哪个对象。

请不要使用此类缩写,它们不适合所有情况,最终会破坏您的代码

相反,已经有一个工具可以使用更简单的语法创建自定义代码:

基本上,而不是

$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\u NONE


在我的自定义模块中,我经常对节点对象使用
$node
,对包装器对象使用
$enode
。它同样短,并且仍然知道我在处理哪个对象。

请注意,对于某些字段类型,最后一个arey级别的键并不总是“值”。有时是“nid”或“tid”(用于nod/分类术语引用),有时是“uri”…用于图像等…请注意,对于某些字段类型,最后一个arey级别的键并不总是“值”。有时是“nid”或“tid”(用于nod/分类术语引用),有时是“uri”…用于图像等。。。