Tengo un script php bastante grande que usa el bucle foreach con bastante frecuencia. La forma en que funciona ahora es pasar una matriz de objetos a cada ciclo foreach, pero quiero modificar el script para que funcione solo con un objeto también. Realmente odiaría y no creo que sea razonable verificar antes de cada bucle si se trata de una matriz de objetos o solo un objeto y, dependiendo de la situación, recorrer la matriz o simplemente hacer cosas con el único objeto. ¿Alguna solución alternativa? Gracias de antemanoPHP foreach en array of objects AND single object?
Respuesta
$item = $obj;
// or
$item = array(...);
if(!is_array($item))
$item = array($item);
foreach($item as $individual)
{
//...
}
Patrón extremadamente común en PHP, encuentro – meagar
suena como tiene que escribir una función/¿Sería esto servir a sus propósitos?
if(is_array($thingy)){
foreach($thingy as $thing){
function($thing);
}
}else{
function($thingy);
}
Eso era lo que estaba tratando de evitar, si tengo al menos un par de docenas de bucles foreach y los agrego. Odiaría envolver todos los contenidos de bucle foreach en una función. Gracias de cualquier manera. – pHelics
Puede pasar una matriz con un solo objeto dentro de ella. O use una configuración de constructor/función polimórfica.
Pasar una matriz con un único objeto es bastante obvio cómo hacerlo, aquí hay algunas otras formas posibles de tratar con él:
function test($var)
{
if(is_a($var,"ClassName")) //Test to see if the passed variable is a member of the class and not an array and put it in an array if so
{
$var = array($var);
}
foreach($var as $v)
{
//Do stuff
}
}
function test($var)
{
if(is_array($var)) //Test if object is array or class, call different functions depending on which it is
{
call_user_func_array(array($this,'doArray'),$var);
}
elseif(is_a($var,"Classname"))
{
call_user_func_array(array($this,'doObject'),$var);
}
}
- 1. Array of PHP Objects
- 2. numpy array of objects
- 3. foreach object/array en jQuery
- 4. GSON Deserializing Array of Custom Objects
- 5. sum of array column
- 6. PHP Foreach If Array Last
- 7. PHP foreach con Nested Array?
- 8. AngularJS: ngResource y array of object como params a URL
- 9. PHP: compruebe si object/array es una referencia
- 10. PHP Santizing/Validating Array of Integers
- 11. PHP Array stdClass Object - Valor del eco
- 12. ¿Cómo crea jQuery Array-Objects?
- 13. Complejidad del tiempo de contains (Object o), en una ArrayList of Objects
- 14. Serializing/Deserializing Dictionary of objects with JSON.NET
- 15. Exploding by Array of Delimiters
- 16. Java array of Hashtables
- 17. stdClass object y foreach loops
- 18. List.Contains (item) with generic list of objects
- 19. Tipo de PHP Sugerencia: array supported, object NOT?
- 20. Django filter versus get for single object?
- 21. Ruby Array find_first object?
- 22. object to string array
- 23. Array y foreach
- 24. C++ shared_ptr of stack object
- 25. java convert object array a int array
- 26. Weighted Centroid of a Array
- 27. Android Resource - Array of Arrays
- 28. C - initialize array of structs
- 29. Sort ArrayList of Array en Java
- 30. Array of Strings en Fortran 77
Yo diría que si en múltiples puntos de la secuencia de comandos no está Asegúrese de que si está trabajando en un solo objeto o en una matriz de objetos, tiene un problema para definir correctamente su flujo de datos. – deceze