首页 文章

如何在php中将stdobj数组转换为关联数组

提问于
浏览
0

我在数组中有这个stdclass对象

Array ( [0] => stdClass Object ( [file_id] => 6 [file_name] => 1ofdays.wav ) [1] => stdClass Object ( [file_id] => 7 [file_name] => abcd.mp3 ) )

我想将这个 stdclass 对象数组转换为关联数组,如

$name_array=([text]=>1ofdays.wav,[text]=>abcd.mp3);
$id_array=([value]=>6,[value]=>7);

我尝试通过首先使用此函数展平数组来实现它

public function array_flatten($mArray) {
    $sArray = array();

    foreach ($mArray as $row) {
        if ( !(is_array($row)) ) {
            if($sArray[] = $row){
            }
        } else {
            $sArray = array_merge($sArray,$this->array_flatten($row));
        }
    }
    return $sArray;

}

这个功能给了我结果

Array ( [0] => 6 [1] => 1ofdays.wav [2] => 7 [3] => abcd.mp3 )

然后我创建了两个数组 even()odd()

并从奇数和偶数索引中获取元素,并将它们推送到受尊重的数组中

结果导致了

even( [0] => 6 [1] => 7 )
odd( [0] => 1ofdays.wav [1] => abcd.mp3 )

现在我想把偶数数组元素放入

Id_array =('value'=>6,'value'=>7)

name_array=('text'=>1ofdays.wav,'text'=>'abcd.mp3')

1 回答

  • 0

    希望它和你想要的一样

    <?php
    
    class stdClass1 {
    
        public $file_id;
        public $file_name;
    
        public function setName($n, $sn) {
            $this->file_id = $n;
            $this->file_name = $sn;
        }
    
    }
    
    $exaObj = new stdClass1;
    $exaObj2 = new stdClass1;
    $exaObj->setName('6', '1ofdays.wav');
    $exaObj2->setName('7', 'abcd.mp3');
    $arr = array($exaObj, $exaObj2);
    
    foreach ($arr as $k => $v) {
        print_r($v);
        echo "<br>";
        foreach ($v as $key => $value) {
            $$key[] = $value;
        }
    }
    
    echo "<pre>";
    print_r($file_id);
    echo "</pre>";
    
    echo "<pre>";
    print_r($file_name);
    echo "</pre>";
    
    echo "Second METHOD<br><br>";
    
    foreach ($arr as $k => $v) {
        $nameArr[] = $v->file_name;
        $idArr[] = $v->file_id;
    }
    
    echo "<pre>";
    print_r($idArr);
    echo "</pre>";
    
    echo "<pre>";
    print_r($nameArr);
    echo "</pre>";
    ?>
    

相关问题