在读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