es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  , ,

Answer

  1. Avatar for 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.

Comments are closed.