array_filter solo funciona con el primer array en un arreglo asociativo anidado dado en el front-end.
Tengo un array asociativo que es esencialmente el siguiente:
$my_users = array (
array(
‘customers_id’ => 123,
‘customers_name’ => ‘Jewelry By Me’
),
array(
‘customers_id’ => 321,
‘customers_name’ => ‘Mary Kay’
)
)
Y una pequeña condición para buscar en este array un nombre de cliente específico:
if($request->param(‘company_name’)) {
$input = “/”.$request->param(‘company_name’).”/”;
$users = array_filter($my_users, function($k, $v) use ($input) {
if (preg_match($input, $k[‘customers_company’], $matches)) {
return $matches;
}
}, ARRAY_FILTER_USE_BOTH);
}
Si paso un valor, digamos, “Jewe”, devolverá correctamente el array donde el nombre de la empresa es “Jewelry By Me” a mi tabla de frontend.
Sin embargo, si paso un valor como “Mar” o incluso “Mary”, no devuelve ninguna fila a mi tabla de frontend.
var_dump $matches para cada caso revela lo siguiente:
array(1) { [0]=> string(4) “Jewe” }
array(1) { [0]=> string(3) “Mar” }
var_dump $users muestra correctamente los datos que estoy buscando.
De manera similar, mi otra función de arrayfilter que no tiene regex simplemente toma el id del cliente y se supone que devuelve la fila donde el customersid = passedincustomersid_param. Esto nuevamente solo funciona en Jewelry By Me pero no en Mary Kay.
Para reiterar, var_dumping revela los datos correctos, pero en el frontend en mi tabla solo se muestra la información asociada a Jewelry By Me.
Estoy perdido para explicar este comportamiento y solucionarlo.
Cualquier ayuda sería apreciada.
davy.ai
Tengo una matriz asociativa que es esencialmente la siguiente:
$my_users = array (
array(
‘customers_id’ => 123,
‘customers_name’ => ‘Jewelry By Me’
),
array(
‘customers_id’ => 321,
‘customers_name’ => ‘Mary Kay’
)
)
Y una pequeña condición para buscar en esta matriz un nombre específico de cliente:
if($request->param(‘company_name’)) {
$input = “/”.$request->param(‘company_name’).”/”;
$users = array_filter($my_users, function($k, $v) use ($input) {
if (preg_match($input, $k[‘customers_company’], $matches)) {
return $matches;
}
}, ARRAY_FILTER_USE_BOTH);
}
Si paso un valor, por ejemplo, “Jewe”, devolverá correctamente la matriz donde el nombre de la compañía sea “Jewelry By Me” a mi tabla en el front-end. Sin embargo, si paso un valor como “Mar” o incluso “Mary”, no devuelve ninguna fila a mi tabla en el front-end.
El var_dump de $matches para cada caso revela lo siguiente:
array(1) { [0]=> string(4) “Jewe” }
array(1) { [0]=> string(3) “Mar” }
Hacer var_dump de $users muestra correctamente los datos que estoy buscando. De manera similar, mi otra función array_filter, que no tiene expresiones regulares simplemente toma el customers_id y se supone que devuelve la fila donde customers_id = customersid_param_pasado. Esto nuevamente, funciona solo en Jewelry By Me pero no en Mary Kay.
Para reiterar, el var_dump revela datos correctos, pero en el front-end, solo se muestran los datos asociados con Jewelry By Me.
Estoy perdido para explicar este comportamiento y corregirlo.
Cualquier ayuda sería apreciada.