J'essaie de créer une classe pour gérer les tableaux mais je n'arrive pas à faire fonctionner array_map()
.
<?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);
Cela sort
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'est-ce que je fais mal ou est-ce que cette fonction ne fonctionne tout simplement pas à l'intérieur des classes?
Vous spécifiez dash
comme rappel dans le mauvais sens.
Cela ne fonctionne pas:
$this->classarray = array_map($this->dash(), $data);
Cela fait:
$this->classarray = array_map(array($this, 'dash'), $data);
Lisez les différentes formes qu'un rappel peut prendre ici .
Bonjour, vous pouvez utiliser comme celui-ci
// 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)
appelle $this->dash()
avec 0 arguments et utilise la valeur de retour comme fonction de rappel à appliquer à chaque membre du tableau. Vous voulez à la place array_map(array($this,'dash'), $data)
.
Il faut lire
$this->classarray = array_map(array($this, 'dash'), $data);
La chose array
- est le rappel PHP pour une méthode d'instance d'objet. Les rappels aux fonctions régulières sont définis comme de simples chaînes contenant le nom de la fonction ('functionName'
), Tandis que les appels de méthode statique sont définis comme array('ClassName, 'methodName')
ou comme une chaîne comme celle-ci: 'ClassName::methodName'
( cela fonctionne à partir de PHP 5.2.3).