Heim  >  Artikel  >  Backend-Entwicklung  >  php foreach 循环数组 并设定key

php foreach 循环数组 并设定key

WBOY
WBOYOriginal
2016-06-23 14:13:371226Durchsuche

foreach($role as $k=>$v){	$arrayRole[$k=$v->role_id]=$v->role_code;					} 



如题   我写的  key  总是设置不了 


回复讨论(解决方案)

怎么设置不了,print_r($role); 看看

foreach($role as $k=>$v){
    $arrayRole[$v->role_id]=$v->role_code;                    
 

foreach($role as $k=>$v){
    $arrayRole[$v->role_id]=$v->role_code;                    
 
}

foreach($role as $k=>$v){
    $arrayRole[$k][$v->role_id]=$v->role_code;                    
 
}

$k=$v->role_id

这个能当键吗

输出  的是     [user_roles] => Array ( [0] => 1 [1] => 3 )       前边的 键值    还是  0  1  

那当然不对了。第二维必须是一个对象。且有 role_id,role_code  属性才行。

.....不是    我的是  一维数组   前边的是yii 的格式  

仔细说明下吧  我做 的只是向   [user_roles]   放一个数组   数组


foreach($role as $k=>$v){
$arrayRole[$k=$v->role_id]=$v->role_code;



我这样写的数组    放进去 以后发现   数组的 key  没有被设置成功 

print_r($role);
贴出结果

Array ( [user_name] => sss [user_password] => 123  [user_roles] => Array ( [0] => 1 [1] => 3 ) [user_sex] => 男 [user_birthday] => 1992-12-23 [user_relation] => 18716439681 [dep_id] => dep_cn [user_address] => xxxxxx [user_allowed] => [user_createtime] => 0 [user_lasttime] => 0 [user_realname] => demo [user_id] => )


我说的 红色区域 

1、你的这个是数组,不是对象。不能用对象方式访问
2、你的 foreach( $role as $k=>$v){ 中的 是指那套红的部分吗?显然不是
按我的要求,应该是整个数据

foreach($role as $k=>$v){
  if($k == 'user_roles') { .... }


你最好在描述一下,你打算加工成什么样的形式

 foreach($role as $k=>$v){   是 红色部分的  
 

<?php			foreach($role as $k=>$v){			  $arrayRole[$v->role_id]=$v->role_code;													} 			?>		<?php echo $form->labelEx($model,'user_roles'); ?>		<?php echo $form->checkBoxList($model,'user_roles',$arrayRole); ?>		<?php echo $form->error($model,'user_roles'); ?>
 

   这是     红色部分  的  代码      
我只是向  [user_roles] =>  Array ( [0] => 1 [1] => 3 )   有下划线的地方 上边代买生成的  我只是想问  为什么  我的数组  key 值设置不成功     怎么扯到这里来了   

不说其他的,你本身那么写会有问题。
foreach里面定义了$k
然后新数组又有$k=$v->role_id;这个时候foreach的$k都变了。

你想要的数组是什么样的?

 foreach($role as $k=>$v){   是 红色部分的  
 

<?php			foreach($role as $k=>$v){			  $arrayRole[$v->role_id]=$v->role_code;													} 			?>		<?php echo $form->labelEx($model,'user_roles'); ?>		<?php echo $form->checkBoxList($model,'user_roles',$arrayRole); ?>		<?php echo $form->error($model,'user_roles'); ?>
 

   这是     红色部分  的  代码      
我只是向  [user_roles] =>  Array ( [0] => 1 [1] => 3 )   有下划线的地方 上边代买生成的  我只是想问  为什么  我的数组  key 值设置不成功     怎么扯到这里来了   
检查$v是否有role_id属性

           foreach($role as $k=>$v){			 $arrayRole[$v->role_id]=$v->role_code;									} 


我想问的是 我的  这段 代码有没有问题     还有    foreach  循环 赋值并设置键值  还有没有其他方法  以及你有能力有爱心的 话  告诉我下 我的方法哪里出错了 。    看完这些的  小生在此拜谢了。  

我想要的数组    key 放 role的 id  value 放 role的编码


 foreach($role as $k=>$v){   是 红色部分的  
 

<?php			foreach($role as $k=>$v){			  $arrayRole[$v->role_id]=$v->role_code;													} 			?>		<?php echo $form->labelEx($model,'user_roles'); ?>		<?php echo $form->checkBoxList($model,'user_roles',$arrayRole); ?>		<?php echo $form->error($model,'user_roles'); ?>
 

   这是     红色部分  的  代码      
我只是向  [user_roles] =>  Array ( [0] => 1 [1] => 3 )   有下划线的地方 上边代买生成的  我只是想问  为什么  我的数组  key 值设置不成功     怎么扯到这里来了   
检查$v是否有role_id属性

role_id  有值      

单纯从这个foreach来看是没有问题的。

哦  我在研究研究 

foreach 是没问题的,关键是你的数组没有你说的 role_id 和 role_code 元素。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn