Fron benim dizi için Array (var_dump)?

4 Cevap

Bir olun

echo '<pre>';
echo var_dump($arrayX);
echo '</pre>'

Ben sonuç var:

array(6) {
  [0]=>
  string(9) "AAA"
  [1]=>
  string(13) "BBB"
  [2]=>
  string(8) "CCC"
  [3]=>
  string(8) "DDD"
  [4]=>
  string(8) "EEE"
  [5]=>
  string(13) "FFF"
}

How Can I make It to A New array What I want is to get arrayX in this format :

array('AAA', 'BBB' , 'CCC','DDD', 'EEE',  'FFF');

  $myarray = array('AAA', 'BBB' , 'CCC','DDD', 'EEE',  'FFF');

4 Cevap

Eğer bunun bir kopyasını istiyorsanız

$a = $arrayX;

Ancak bazı dize biçimine dönüştürmek için varsa o zaman bunu yapmanın daha iyi bir yolu bu olurdu

$dump = var_export($a,true);
eval('$b = ' . $dump . ';');

Ya da daha iyisi

$s = serialize($a);
$c = unserialize($s);

Böyle yapmazsa o zaman burada söz vardump biçimi ayrıştırmak için nasıl

function parseValue($value) {
    return substr(preg_replace('/\s*[a-z]+\([0-9]+\)\s+"(.*)/','\\1',$value),0,-2);
}
function parseIndex($index) {
    return preg_replace('/[^[]*\[([0-9]+)\].*/','\\1',$index);
}
function parseVardump($dump) {

$lines = explode("\n",$dump);

foreach ($lines as $line) {
    switch (true) {
    case preg_match('/array\([0-9]+\) {/',$line) :
    break;
    case preg_match('/\[[0-9]+\]=>/',$line) :
        // end previous value
        if (isset($index)) {
    	$ar[$index] = parseValue($value);
        }
        $index = parseIndex($line);
        $value = '';
    break;
    case preg_match('/}$/',$line) :
        if (isset($index)) {
    	$ar[$index] = parseValue($value);
        }
    break;
    default:
        $value .= $line . "\n";
    break;
    }
}
return $ar;
}

$a = array("AAA\n", 'BBB' , 'CCC','DDD', 'EEE',  'FFF');

ob_start();
var_dump($a);
$dump = ob_get_contents();
ob_end_clean();

$ar = parseVardump($dump);

ehm ...? Bu:

$myarray = $arrayX;

Eğer karmaşık yapmak istiyorsanız, var_export kullanabilirsiniz

Ben sorunuzu anlamıyorum itiraf etmeliyim.

Eğer $arrayX bir kopyasını istiyorsanız, o zaman sadece yazın

$myarray = $arrayX;

Eğer istediğiniz biçimi olarak çıktı basit bir işlevi sağa olabilir. Bu gibi:

<?php
function dump_array($ar) {
    $output = 'array(';
    $lastIndex = count($ar) - 1;
    $counter = 0;
    foreach($ar as $key => $value) {
        $output .= (is_string($value) ? "'{$value}'" : $value) . ( $counter++ < $lastIndex ? ', ' : '' );
    }
    $output .= ')';
    return $output;
}
?>

rağmen yerleşik "var_dump ()" fonksiyonu dizinin içindeki nesneler hakkında bilgi diziler içine recurses gösterir unutmayın. Eğer böyle bir işlevselliğe ihtiyacınız varsa, bunu yapmak için bu işlevi uzatmak gerekir.