una - php array_walk use
array_map no funciona en clases (4)
array_map()
crear una clase para manejar matrices, pero parece que no puedo hacer que array_map()
trabaje en ella.
<?php
//Create the test array
$array = array(1,2,3,4,5,6,7,8,9,10);
//create the test class
class test {
//variable to save array inside class
public $classarray;
//function to call array_map function with the given array
public function adding($data) {
$this->classarray = array_map($this->dash(), $data);
}
// dash function to add a - to both sides of the number of the input array
public function dash($item) {
$item2 = ''-'' . $item . ''-'';
return $item2;
}
}
// dumps start array
var_dump($array);
//adds line
echo ''<br />'';
//creates class object
$test = new test();
//classes function adding
$test->adding($array);
// should output the array with values -1-,-2-,-3-,-4-...
var_dump($test->classarray);
Estas salidas
array(10) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) [6]=> int(7) [7]=> int(8) [8]=> int(9) [9]=> int(10) }
Warning: Missing argument 1 for test::dash(), called in D:/xampp/htdocs/trainingdvd/arraytesting.php on line 11 and defined in D:/xampp/htdocs/trainingdvd/arraytesting.php on line 15
Warning: array_map() expects parameter 1 to be a valid callback, function ''--'' not found or invalid function name in D:/xampp/htdocs/trainingdvd/arraytesting.php on line 11 NULL
¿Qué estoy haciendo mal o esta función simplemente no funciona dentro de las clases?
Debe leer
$this->classarray = array_map(array($this, ''dash''), $data);
El array
cosas es la devolución de llamada de PHP para un método de instancia de objeto. Las rellamadas a las funciones regulares se definen como cadenas simples que contienen el nombre de la función ( ''functionName''
nombre ''functionName''
), mientras que las llamadas a métodos estáticos se definen como array(''ClassName, ''methodName'')
o como una cadena así: ''ClassName::methodName''
( funciona a partir de PHP 5.2.3).
Está especificando el dash
como la devolución de llamada de la manera incorrecta.
Esto no funciona:
$this->classarray = array_map($this->dash(), $data);
Esto hace:
$this->classarray = array_map(array($this, ''dash''), $data);
Lea acerca de las diferentes formas que puede tomar una devolución de llamada here .
Hola, puedes usar Like this
// Static outside of class context
array_map( array( ''ClassName'', ''methodName'' ), $array );
// Static inside class context
array_map( array( __CLASS__, ''methodName'' ), $array );
// Non-static outside of object context
array_map( array( $object, ''methodName'' ), $array );
// Non-static inside of object context
array_map( array( $this, ''methodName'' ), $array );
array_map($this->dash(), $data)
llama a $this->dash()
con 0 argumentos y usa el valor de retorno como la función de devolución de llamada para aplicar a cada miembro de la matriz. En su lugar, quiere array_map(array($this,''dash''), $data)
.