简体   繁体   English

如何将stdClass对象转换为refrence数组? (PHP)

[英]How to convert stdClass object in to refrence array? (PHP)

I have variable $related witch is stdCalss object and i want to convert it with one foreach loop in to reffrence array. 我有变量$related女巫是stdCalss对象,我想用一个foreach循环转换为reffrence数组。

Var_dump of Object $related : Object $related Var_dump

array (size=19)
  0 => 
    object(stdClass)[20]
      public 'id_product' => string '1568' (length=4)
      public 'related' => string '1567' (length=4)
  1 => 
    object(stdClass)[21]
      public 'id_product' => string '1568' (length=4)
      public 'related' => string '1562' (length=4)
  2 => 
    object(stdClass)[22]
      public 'id_product' => string '1568' (length=4)
      public 'related' => string '1564' (length=4)
  3 => 
    object(stdClass)[23]
      public 'id_product' => string '1568' (length=4)
      public 'related' => string '1410' (length=4)
  4 => 
    object(stdClass)[24]
      public 'id_product' => string '111' (length=3)
      public 'related' => string '77' (length=2)
  5 => 
    object(stdClass)[25]
      public 'id_product' => string '111' (length=3)
      public 'related' => string '1610' (length=4)

Php code: PHP代码:

     foreach ($related AS $r){
     ????
     }
     var_dump($rels);

Wished Output: 希望的输出:

    $rels = array(
           '1568'=>'1567, 1562, 1564, 1410',
           '111'=>'77,1610'
            );
$rels = array ();
foreach ($related as $r){
     $rels[$r->id_product] .= $r->related . ","; // put all of them with respective key together
}
$rels = array_map(
    function ($a) {
        $a = preg_replace('~,(?!.*,)~', '', $a);
        return $a;
    }
,$rels); // remove last commas
var_dump($rels);

Try, 尝试,

$rels = array();
foreach($related as $r){

   $rels[$r->id_product] .= $r->related.', ';

}

array_walk_recursive($related, function(&$item){
    $item = rtrim($item,', ');
});

From the PHP docs: http://php.net/manual/en/language.types.type-juggling.php 来自PHP文档: http//php.net/manual/en/language.types.type-juggling.php

Build a temporary array and implode it: 构建一个临时数组并将其内爆:

foreach($related AS $r) {
    $temp[$r->id_product][] = $r->related;
    $rels[$r->id_product]   = implode(', ', $temp[$r->id_product]);
}
print_r($rels);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM