当前位置:Gxlcms > PHP教程 > $arrayname[item]=value与$arrayname[item]=value的区别

$arrayname[item]=value与$arrayname[item]=value的区别

时间:2021-07-01 10:21:17 帮助过:8人阅读

在读wordpress taxonomy.php 源代码时,遇到数组的创建问题,概括起来就是:
$arrayname[item]=value 与 $arrayname[item][]=value 有什么区别吗?在这个例子中,其实就是 数/值交换了下位置,是吗? 请达人指教。
function _get_term_hierarchy( $taxonomy ) 中:

$children = array();

$terms = get_terms($taxonomy, array('get' => 'all', 'orderby' => 'id', 'fields' => 'id=>parent'));

foreach ( $terms as $term_id => $parent ) {

if ( $parent > 0 )

$children[$parent][] = $term_id;

}

在 function get_terms( $taxonomies, $args = '' )中:

$_terms = array();

if ( 'id=>parent' == $_fields ) {

foreach ( $terms as $term ) {

$_terms[ $term->term_id ] = $term->parent;

      }

      }


回复讨论(解决方案)

首先 你[ ] 里面不是变量 需要用引号引起来吧 不然..... $arrayname[item]=value 这个是一维数组 将数组$arrayname 建名为 'item' 的元素的值 为 value 而 $arrayname['item'][] = value 是二维数组 将数组$arrayname['item']的下级数组的当前位置的值设为 value

$children[$parent][] 
$children[$parent]=可能是一个数组(子项可能很多啊,可以是一个数组)

$_terms[ $term->term_id ] = $term->parent;
$_terms[ $term->term_id ]=只能是一个值(父项只能是一个啊)
对否

$_terms[ $term->term_id ] = $term->parent;
用来收集每个 term_id 的 parent 节点(term_id 是唯一的)

$children[$parent][] = $term_id;
用来聚类子节点

前者是直接赋值。
后者是创建数组,然后追加入最后一个元素。

前者是直接赋值。
后者是创建数组,然后追加入最后一个元素。
--‘创建数组,然后追加入最后一个元素’是什么意思?不理解。
$_terms[ $term->term_id ] = $term->parent;
用来收集每个 term_id 的 parent 节点(term_id 是唯一的)

$children[$parent][] = $term_id;
用来聚类子节点
----能理解

$arrayname[item]=value 与 $arrayname[item][]=value 构造成的数组,分别是这样的,对吗?
$aaa = array (
3=>7,
6=>9 )

$bbb= array (
3=>array(
0=>8,
1=>4,
)
)

后者是创建数组,然后追加入最后一个元素。
--‘创建数组,然后追加入最后一个元素’是什么意思?不理解。

对于
foreach ( $terms as $term ) {
$_terms[ $term->term_id ] = $term->parent;
}
由于赋值是在循环中执行的
如果 $term->term_id 不唯一,即 $term->term_id 重复出现
那么,$_terms[ $term->term_id ] 就是最后一次 相同 $term->term_id 的 $term->parent

人气教程排行