PHP - array_column

   
Vista:
Imágen de perfil de shmarte

array_column

Publicado por shmarte (1 intervención) el 24/07/2017 20:36:14
Hola tengo un problema algo curios.

tengo una funcion que me carga los datos de una array. y que funciona bien, pero cuando quiero hacerlo con file
el array me lo devuelve vacio.

paso a continuación el codigo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
 
function datos($str){
 
global $libros;
 
$libros = [
    [
        "título"=>"El Golem",
        "autor"=>"Gustav Meyrink",
        "genero"=>"novela",
        "resumen"=>"El Golem recoge una antigua leyenda relacionada con el gran rabino Loew de Praga (1512-1609) y con imágenes vigorosas evoca los misterios del gueto de Praga. El Golem es una figura de arcilla animada por obra de la cábala, para defender a los judíos, pero que se escapa fácilmente del control y provoca catástrofes."
    ],
    [
        "título"=>"Las aventuras de Alicia en el país de las maravillas",
        "autor"=>"Lewis Carroll",
        "genero"=>"cuento",
        "resumen"=>"Es la historia de un mágico sueño. Mientras permanece sentada con su hermana en el bosque, Alicia se levanta y persigue a un conejo que se le ha parecido. De pronto cae, en la madriguera, en medio de un montón de hojas secas."
    ],
    [
        "título"=>"Planilandia",
        "autor"=>"Edwin Abbott",
        "genero"=>"novela",
        "resumen"=>"¿Cómo sería la existencia en un mundo de dos dimensiones? ¿Y de una sola? ¿Y de ninguna dimensión? Y, por encima de las tres dimensiones, ¿existen espacios de 4, 5, 10 o más dimensiones? Y, si existen, ¿se puede conectar con ellos?"
    ],
    [
        "título"=>"El horror de Dunwich",
        "autor"=>"H.P. Lovecraft",
        "genero"=>"cuento",
        "resumen"=>"Maestro consumado de un género hibrido de fantasía ónírica y ciencia ficción, creador del llamado “cuento materialista de terror” y buen conocedor de los recursos técnicos de la literatura clásica sobre esos temas, H.P. Lovecraft fue el inspirador de una escuela iniciática y el inventor de un complejo universo de mitos y una abigarrada cosmogonía que aspiraban, simultaneamente, a la verosimilitud y al asombro. Su originalidad radica en haber trasladado los resortes del género desde un más allá sobrenatural, que había perdido vigencia y efectividad, a un mundo de abominaciones cuya plausibilidad respaldan la ciencia, la razón y, en última instancia, deseos y temores ancestrales."
    ],
    [
        "título"=>"El corazón delator",
        "autor"=>"Edgar Allan Poe",
        "genero"=>"cuento",
        "resumen"=>"En este cuento Edgar Allan Poe explora la perdición del ser humano por el odio gratuito e irracional que se deja crecer en el corazón de los asesinos.
        El narrador está haciendo un recuento de su actuación hasta explicar su propio arresto por los oficiales y el odio que sentía crecer por un anciano y  su ojo."
    ],
    [
        "título"=>"El Señor de los Anillos",
        "autor"=>"J. R. R. Tolkien",
        "genero"=>"novela",
        "resumen"=>"El Señor de los Anillos (título original en inglés: The Lord of the Rings) es una novela de fantasía épica escrita por el filólogo y escritor británico J. R. R. Tolkien.
        Su historia se desarrolla en la Tercera Edad del Sol de la Tierra Media, un lugar ficticio poblado por hombres y otras razas antropomorfas como los hobbits, los elfos o los enanos, así como por muchas otras criaturas reales y fantásticas. La novela narra el viaje del protagonista principal, el hobbit Frodo Bolsón, para destruir el Anillo Único y la consiguiente guerra que provocará el enemigo para recuperarlo, ya que es la principal fuente de poder de su creador, el Señor oscuro Sauron."
    ]
];
 
return $libros;
 
}
 
function titulos($str2){
 
$val=datos($str2);
 
$tl_libro = array_column($val, 'título'); // he encontrado esta sentencia array_column qye me permite crear un array con el titulo de los libros
 
 
 
return ($tl_libro);
}

con este modelo me funciona bien, pero cuando lo quiero hacer mas eficiente. cargando los datos desde un file.txt

Se cargan los datos pero el array_column que funciona arriba en el siguiente codigo me lo deja vacio
¿por que?

Codigo donde el codigo se carga en $val
perto no funciona el array_column


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php
 
function datos($str){
 
global $libros;
 
$libros = file('libros.txt');  Los datos de los libros estan tal cual como en el array solo que en un txt
 
}
 
return $libros;
 
}
 
?>
 
<?php
function titulos($str2){
 
$val=datos($str2);
 
print_r($val);
 
$tl_libro = array_column($val, 'título'); // en el anterior codigo en esta linea me devuelve los titulos de los libro,
pero aqui me devuelve el array vacio ¿?
 
print_r($tl_libro);
 
return ($tl_libro);
}
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de [abZeroX]

array_column

Publicado por [abZeroX] (129 intervenciones) el 25/07/2017 05:58:21
Hola te dejo una solución guardando los datos de los libros en un archivo JSON:

file.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
	"libros": [
		{
			"título": "El Golem",
			"autor": "Gustav Meyrink",
			"genero": "novela",
			"resumen": "El Golem recoge una antigua leyenda relacionada con el gran rabino Loew de Praga (1512-1609) y con imágenes vigorosas evoca los misterios del gueto de Praga. El Golem es una figura de arcilla animada por obra de la cábala, para defender a los judíos, pero que se escapa fácilmente del control y provoca catástrofes."
		},
		{
			"título": "Las aventuras de Alicia en el país de las maravillas",
			"autor": "Lewis Carroll",
			"genero": "cuento",
			"resumen": "Es la historia de un mágico sueño. Mientras permanece sentada con su hermana en el bosque, Alicia se levanta y persigue a un conejo que se le ha parecido. De pronto cae, en la madriguera, en medio de un montón de hojas secas."
		},
		{
			"título": "Planilandia",
			"autor": "Edwin Abbott",
			"genero": "novela",
			"resumen": "¿Cómo sería la existencia en un mundo de dos dimensiones? ¿Y de una sola? ¿Y de ninguna dimensión? Y, por encima de las tres dimensiones, ¿existen espacios de 4, 5, 10 o más dimensiones? Y, si existen, ¿se puede conectar con ellos?"
		}
	]
}

index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
 
function datos() {
	return json_decode(file_get_contents('file.json'), true)['libros'];
}
 
function titulos() {
	$tl_libro = array_column(datos(), 'título');
	return ($tl_libro);
}
 
echo "<pre>";
var_dump(titulos());
echo "</pre>";

Nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar