php iki Dizilerin değerlerini karşılaştırarak

4 Cevap php

i tuşları kitap id iki dizi (61, 78, ... vb) var

(1) book_width
     (
        [61] => 8.3
        [72] => 8286.1
        [78] => 6.4
        [100] => 8407.0
        [102] => 0.7
     )

(2) book_height
   (
    [61] => 9.00
    [72] => 150
    [78] => 8.00
    [100] => 150
    [102] => 3.00
  )

şimdi ben onların yüksekliği daha büyük ya da genişliğine eşit olduğu bu kitaplar id içeren bir dizi istiyorum

i altında bir dizi anma gerekir demektir

(2) book_dimension
       (     
 /*book id*/ [78] => 8.00 //along their height or width(anyone)
             [102] => 3.00
      )



 or only book id in a new array
    (2) book_dimension
           (     
            [0] => 78
            [1] => 102
      )

4 Cevap

Ben bunu yapmak gerektiğine inanıyorum:

function compare_dimensions( $width, $height )
{
 return $height < $width;
}

$result = array_uintersect_assoc( $array_width, $array_height, 'compare_dimensions' );

var_dump( $result );

EDIT:
Oops: Comparing should be the other way around. (changed >= to < )

belgeleri: http://docs.php.net/array_uintersect_assoc

Bu test ya da derlenmiş değil, ben senin önceki soruya iş still duyuyorum.

Ben arzu dizinin türüne bağlı olarak, sürebilir iki yaklaşım ekledi.

$book_dimension = array(); //contents to be added

foreach($book_height as $heightKey => $heightValue) {
      foreach($book_width as $widthKey => $widthValue) {
          // if height is greater than or equal to width
        if ($heightValue >= $widthValue) {

          // would return: $book_dimension[78] => "8.00"
          $book_dimension[$heightKey] = $heightValue;

          // or this approach, which will return: $book_dimension[0] => 78
          $book_dimension[] = $heightKey;

        }
    }
}

Diyelim ki gerçekten php yapmak zorunda varsayalım. Şu anda belki de bu konuda bir şeyler yapabilir ve (dizinin her elemanı bir eleman / kitap açıklanır böylece) birlikte veri tutmak, iki ayrı diziler var.

$w = array(61 => 8.3, 72 => 8286.1, 78 => 6.4, 100 => 8407.0, 102 => 0.7);
$h = array(61 => 9.00,  72 => 150, 78 => 8.00,  100 => 150, 102 => 3.00);
$dimensions = array();
foreach($w as $key=>$width) {
  $dimensions[$key] = array('width'=>$width, 'height'=>$h[$key]);
}

Şimdi array_filter() Eğer istemediğiniz tüm unsurları filtrelemek için kullanabileceğiniz tek bir yelpazeye sahip.

örneğin php 5.3 ile:

$result = array_filter($dimensions, function($x) { return $x['height']>=$x['width']; });
print_r($result);

önceki sürümlerinde (anonim fonksiyonlar bu tür desteklemez):

function heightGreateOrEqualWidth($x) {
  return $x['height']>=$x['width'];
}
$result = array_filter($dimensions, 'heightGreateOrEqualWidth');
print_r($result);

Bu deneyin, ben bunu test etmedim:

<?php

$book_width = array( 61 => 8.3,72 => 8286.1,78 => 6.4,100 => 8407.0,102 => 0.7);
$book_height = array(61 => 9.00, 72 => 150, 78 => 8.00, 100 => 150, 102 => 3.00);
$result = array();
foreach($book_height as $k => $v)
{
    if($v >= $book_width[$k])
    {
       $result[$k] = max($book_width[$k], $v);
    }
}

var_dump($result);

P.S. Yükseklik durumu uymak için kodu değişti. Bunu test.