欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-01-28 12:21:46
...
在读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