检查元素是否在数组中并递增

时间:2014-05-11 20:01:39

标签: php arrays string

我的algorythm存在一些问题,无法找到解决方法。我有点生锈的节目,对不起,如果这是一个愚蠢的问题。

假设我有一个类似下面的数组

$records = array(
    array(
        'weight' => 2135,
        'n2' => 'John',
        'n1' => 'Jones',
    ),
    array(
        'weight' => 3245,
        'n2' => 'Sally',
        'n1' => 'Smith',
    ),
    array(
        'weight' => 5342,
        'n2' => 'Sally',
        'n1' => 'Jones',
    ),
    array(
        'weight' => 5623,
        'n2' => 'Peter',
        'n1' => 'Doe',
    )
);

我想检查数组中是否存在两个变量,例如。我想检查一下" 莎莉" AND " 琼斯"存在于一个事件中,如果它在n1或n2中无关紧要,重要的是它们都在那里。如果它们存在,我想要重量。

否则,如果我搜索,例如" John " AND " 史密斯"并且它们不存在于数组中,我想将此事件推送到数组并为此事件添加权重值。

有没有人知道我该怎么办?我已经阻止并且已经工作了2天了。

感谢。

2 个答案:

答案 0 :(得分:0)

循环记录,并检查名称

   foreach($records as $record){
        if (in_array("Sally", $record)) {
        //increase weight
        }else{
        //push to array
        }
    }

答案 1 :(得分:0)

Completeley未经测试,可能无法完全按照您的要求行事,但这将使您走上正确的道路。

$contains = FALSE;
$contains = findNames($array, $firstName, $lastName);

if($contains === TRUE)
{
    // Add your weight to the array here
} else {
    // Do something else or nothing 
}

function findNames($array, $firstName, $lastName) {
foreach($array as $arrayValues=> $arrayValue) {
    if($arrayValue['n1'] == $firstName || $arrayValue['n1'] == $lastName ||                                     $arrayValue['n2'] == $firstName || $arrayValue['n2'] == $lastName) {
        return TRUE;
    } else {
        return FALSE;
    }
}

OR:

function findNames($array, $firstName, $lastName) {

if(in_array($firstName, $array) || in_array($lastName, $array))
{
    return TRUE;
} else {
    return FALSE;
}