Php 2-D matrisi oluşturma

1 Cevap php

Şey her satır ve sütun bir anahtar olması gerekir php bir 2D matris oluşturmak için var. Bunu yapmaya çalıştım ama ne olur bir 2-D dizisi bir matris benzemez hangi yaratılmış olmasıdır. Ben aşağıdaki kod kullanılır:

$x=$row['start_id'];
$y=$row['dest_id'];
$d=$row['distance'];
$this->map[$x][$y]=$d;

Burada harita amaçlanan matristir. Bu kodun niyeti bir bitişiklik matris oluşturmak ve daha sonra maksimum mesafe unset hücreleri doldurmak için. $ X, $ y ve yukarıdaki kodda $ d mysql sorgu sonucu elde edilir.

Örnek Çıktı:

Array (
    [10010012] => Array ( 
        [10010013] => 2
        [10010016] => 8 
    )
    [10010016] => Array ( 
        [10010015] => 5 
    )
    [10010013] => Array ( 
        [10010014] => 7 
        [10010016] => 3
    )
    [10010014] => Array ( 
        [10010015] => 2 
    )
)

Now the problem is that I am not able to fill the empty cells
e.g. row key =>[10010012] and column key=>[10010015] (Not able to set value)

Herhangi bir yardım takdir edilmektedir. Mümkünse de böyle ana geçerken nasıl söz.

Ben göreli bir acemi yaşıyorum ve benim sorunu açıklamak için elimden geleni denedim. Eğer herhangi bir eksiklikleri bulmak Ancak eğer onları işaret edin.

Edit: matris bir kare değil.

1 Cevap

Olurdu

$this->map[10010012][10010015]= MAX_DISTANCE;

Öte yandan, neden MAX_DISTANCE tüm boş / var olmayan hücre ayarlamak istiyorsun? Sen eksik harita bırakabilir ve bir hücre does not exist onun değeri olarak MAX_DISTANCE varsayalım zaman.

edit: Basit bir örnek

define('MAX_DISTANCE', PHP_INT_MAX);

$map = array(
  10010012 => array ( 10010013 => 2, 10010016 => 8),
  10010016 => array ( 10010015 => 5 ),
  10010013 => array ( 10010014 => 7, 10010016 => 3),
  10010014 => array ( 10010015 => 2 )
);

function getValue(&$map, $x, $y) {
  return isset($map[$x][$y]) ? $map[$x][$y] : MAX_DISTANCE;
}

function setValue(&$map, $x, $y, $value) {
  if ( !isset($map[$x]) ) {
    $map[$x] = array($y => $value);
  }
  else {
    $map[$x][$y] = $value;
  }
}

// get an "existing" value from $map
echo getValue($map, 10010012, 10010016), "\n";
// get a "non-existing" value from $map
echo getValue($map, 10010014, 10010016), "\n";

// set a "new" value
setValue($map, 10010014, 10010016, 5);
// $map has been altered
var_dump($map[10010014]);

baskılar

8
2147483647
array(2) {
  [10010015]=>
  int(2)
  [10010016]=>
  int(5)
}