statico - visualizzare elementi array php




ottenere in modo sicuro il valore dell'elemento dell'array per gli indici definiti e non definiti (3)

PHP7 ha introdotto l' operatore di coalesce null ?? . Supponendo che tu abbia la fortuna di gestirlo, puoi farlo

$x = $array['idx'] ?? null;

Mi stanco di scrivere espressioni ternarie per disinfettare i dati, cose come:

$x = isset($array['idx']) ? $array['idx'] : null;
// and
$x = !empty($array['idx']) ? $array['idx'] : null;

Esiste un modo nativo o accessor / filter ZF per ottenere il valore dell'elemento dell'array per un determinato array senza:

  • disabilitazione error_reporting
  • isset ternario / controllo empty
  • operatore di controllo degli errori @
  • creando la mia funzione globale o accesso / filtro dell'applicazione

Qualcosa di simile a:

$x = get_if_set($array['idx']);
// or 
$x = Zend_XXX($array, 'idx')

Dichiara le tue variabili e dai loro un valore iniziale.

$x = NULL;
$y = 'something other than NULL';

ora se hai un array $ myArray che ha chiavi xey la funzione di estrazione sovrascriverà i valori iniziali (puoi anche configurarlo per non farlo)

$myArray['x'] = 'newX';
extract($myArray);
//$x is now newX

se non ci sono chiavi, i valori iniziali per le variabili rimangono. Metterà anche altre chiavi di array in rispettive variabili.


Direi, usa una funzione di supporto per interfacciarti con il tuo array.

function getValue($key, $arr, $default=null) {
   $pieces = explode('.', $key);
   $array = $arr;

   foreach($pieces as $array_key) {

      if(!is_null($array) && is_array($array) && array_key_exists($array_key, $array)) { 
          $array = $array[$array_key];
      }
      else {
          $array = null;
          break;
      }
   }
   return is_null($array) ? $default : $array;
}

$testarr = [
    ['foobar' => 'baz'],
    ['active' => false]
];
$output = getValue('0.foobar',$testarr,'NOT FOUND');
var_dump($output);
$output = getValue('0',$testarr,'NOT FOUND');
var_dump($output);
$output = getValue('1.active',$testarr,'NOT FOUND');
var_dump($output);
$output = getValue('i.do.not.exist',$testarr,'NOT FOUND');
var_dump($output);

In questo modo è possibile fornire un valore predefinito anziché null a proprio piacimento, non è necessario ripristinare l'array come un altro oggetto ed è possibile richiedere qualsiasi valore profondamente annidato come si desidera senza dover controllare gli array "parent".

https://ideone.com/11jtzj







zend-framework