vacio recorrer multidimensional matriz manejo imprimir declarar datos asociativo array php arrays query-string associative-array implode

recorrer - matriz en php



La forma más rápida de implosionar una matriz asociativa con claves (10)

Estoy buscando una forma rápida de convertir una matriz asociativa en una cadena. La estructura típica sería como una cadena de consulta URL pero con separadores personalizables para que pueda usar '' & ''para enlaces xhtml o'' & ''de lo contrario.

Mi primera inclinación es usar foreach pero dado que mi método podría llamarse muchas veces en una sola solicitud, me temo que podría ser demasiado lento.

<?php $Amp = $IsXhtml ? ''&amp;'' : ''&''; $Parameters = array(''Action'' => ''ShowList'', ''Page'' => ''2''); $QueryString = ''''; foreach ($Parameters as $Key => $Value) $QueryString .= $Amp . $Key . ''='' . $Value;

¿Hay una manera mas rápida?


¿Qué hay de este más corto, más transparente, pero más intuitivo con array_walk

$attributes = array( ''data-href'' => ''http://example.com'', ''data-width'' => ''300'', ''data-height'' => ''250'', ''data-type'' => ''cover'', ); $args = ""; array_walk( $attributes, function ($item, $key) use (&$args) { $args .= $key ." = ''" . $item . "'' "; } ); // output: ''data-href="http://example.com" data-width="300" data-height="250" data-type="cover"


Esta es la versión más básica que puedo pensar:

public function implode_key($glue = "", $pieces = array()) { $keys = array_keys($pieces); return implode($glue, $keys); }


Esta es mi solución, por ejemplo, para un div data-attributes:

<? $attributes = array( ''data-href'' => ''http://example.com'', ''data-width'' => ''300'', ''data-height'' => ''250'', ''data-type'' => ''cover'', ); $dataAttributes = array_map(function($value, $key) { return $key.''="''.$value.''"''; }, array_values($attributes), array_keys($attributes)); $dataAttributes = implode('' '', $dataAttributes); ?> <div class="image-box" <?= $dataAttributes; ?> > <img src="http://example.com/images/best-of.jpg" alt=""> </div>


Por otro lado, estaba buscando la mejor manera de implosionar una matriz asociativa pero usando mis propios separadores, etc ...

Así que hice esto usando la función array_walk () de PHP para permitirme unir una matriz asociativa en una lista de parámetros que luego podrían aplicarse a una etiqueta HTML ....

// Create Params Array $p = Array("id"=>"blar","class"=>"myclass","onclick"=>"myJavascriptFunc()"); // Join Params array_walk($p, create_function(''&$i,$k'',''$i=" $k=/"$i/"";'')); $p_string = implode($p,""); // Now use $p_string for your html tag

Obviamente, puedes pegar eso en tu propia función de alguna manera pero te da una idea de cómo puedes unirte a una matriz asociativa usando tu propio método. Espero que ayude a alguien :)


Puedes usar http_build_query() para hacer eso.

Genera una cadena de consulta codificada en URL de la matriz asociativa (o indexada) provista.


Si no le preocupa el formato exacto, pero desea algo simple, pero sin los saltos de línea de print_r , también puede usar json_encode($value) para obtener un resultado formateado rápido y simple. ( tenga en cuenta que también funciona bien en otros tipos de datos )

$str = json_encode($arr); //output... [{"id":"123","name":"Ice"},{"id":"234","name":"Cake"},{"id":"345","name":"Pie"}]


Una forma es usar print_r(array, true) y devolverá la representación de cadena de matriz


Una línea para crear cadenas de atributos HTML (con comillas) de una matriz simple:

$attrString = str_replace("+", " ", str_replace("&", "/" ", str_replace("=", "=/"", http_build_query($attrArray)))) . "/"";

Ejemplo:

$attrArray = array("id" => "email", "name" => "email", "type" => "email", "class" => "active large"); echo str_replace("+", " ", str_replace("&", "/" ", str_replace("=", "=/"", http_build_query($attrArray)))) . "/""; // Output: // id="email" name="email" type="email" class="active large"


echo implode(",", array_keys($companies->toArray()));

$companies->toArray() - esto es solo en caso de que su $variable sea ​​un objeto, de lo contrario solo pase $ companies.

¡Eso es!


function array_to_attributes ( $array_attributes ) { $attributes_str = NULL; foreach ( $array_attributes as $attribute => $value ) { $attributes_str .= " $attribute=/"$value/" "; } return $attributes_str; } $attributes = array( ''data-href'' => ''http://example.com'', ''data-width'' => ''300'', ''data-height'' => ''250'', ''data-type'' => ''cover'', ); echo array_to_attributes($attributes) ;