2012-02-27 30 views
0

因此,我们得到的值(INT):数组排序并显示其对应

V1 , V2 , V3 , V4 

而且文本:

Text1 , Text2 , Text3 , Text4 

我们将责令值和回声corespondent文本,而不是值。

让我们举个例子:

(variables) : V1 = 1 , V2 = 30 , V3 = 2 , V4 = 4 
(text) : Banana , Cake , Apple , Patato 

会导致 - >

V1 , V3 , V4 , V2 

后,他们是有序的,但我们将显示文本,而不是我们目前的结果。 所以最后回声:

Banana , Apple , Patato , Cake . (will echo them into a table) 

注意:某些值可以等于!

到目前为止我试图用3个数组:

($text_array) text , ($arr1) V1[...] , and ($arr2) V1[...] 

(同第二,因为我使用排序($数组);在其上)。

我试图呼应:

echo $text_array[array_search($arr1[0], $arr2)]; 

但是这样会让文字重复,如果值是相同的。

如果我没有让自己清楚,我很抱歉......这真的很难解释。

UPDATE 

它看起来像这样:

$V1 = $vars[1] + $vars[29] + $vars[30]; 
$V2 = $vars[6] + $vars[19] + $vars[40]; 
$V3 = $vars[14] + $vars[15] + $vars[44]; 
$V4 = $vars[0] + $vars[22] + $vars[37]; 
.......................................... 
$V15 = $vars[3] + $vars[28] + $vars[31]; 

文本数组:

$valori = array(("Altruismul", "Simtul estetic", "Creativitatea", "Stimularea intelectuala", "Reusita obiectivata", "Independenta", "Prestigiul", "Conducerea altora", "Avantajele materiale", "Siguranta", "Ambianta de la locul de munca", "Relatiile cu superiorii", "Relatiile cu colegii", "Stilul de viata pe care-l asigura profesia", "Varietate"); 

尝试:

$arr = array("Altruismul" => $V1 , "Simtul estetic" => $V2 , "Creativitatea" => $V3 , "Stimularea intelectuala" => $V4 , "Reusita obiectivata" => $V5 , "Independenta" => $V6 , "Prestigiul" => $V7 , "Conducerea altora" => $V8 , "Avantajele materiale" => $V9 , "Siguranta" => $V10 , "Ambianta de la locul de munca" => $V11 , "Relatiile cu superiorii" => $V12 , "Relatiile cu colegii" => $V13 , "Stilul de viata pe care-l asigura profesia" => $V14 , "Varietate" => $V15); 
      asort($arr);  

工作不正常。

+1

您可以使用数组来存储文本和值。 'array('v1'=>'Cake','v2'=>'Banana','v3'=>'Potato','v4'=>'Apple')'和排序数组 – smoqadam 2012-02-27 20:21:16

+0

它没有回应我需要。没有弦乐!我需要$ V1,$ V2,$ V3,$ V4。它应该是数组($ V1 =>'Cake'...) – virusbogdan 2012-02-27 20:23:48

回答

1

我猜你想说的是,你有两个链接的数组,你想排序一个,并使用该排序输出第二个。如果是的话,试试这个:

$amount = array(1 => 1, 2 => 30, 3 => 2, 4 => 4); 
$food = array(1 => 'Banana', 2 => 'Cake', 3 => 'Apple', 4 => 'Patato'); 
asort($amount); 

foreach($amount as $key => $val) { 
    echo "{$food[$key]} - $val\n"; 
} 

或者:

$food = array('Banana' => 1, 'Cake' => 30, 'Apple' => 2, 'Patato' => 4); 
asort($food); 

foreach($food as $item => $val) { 
    echo "$item - $val\n"; 
} 
0

首先,确保你有一个独特的一套钥匙:

$texts = array_unique($texts); // assuming $texts is your foods 

然后,你想将两者结合起来:

$combined = array_combine($texts, 
          array($v1, $v2, $v3, $v4 /* ... you get the idea */); 

然后,你要基于键进行排序:

ksort($combined); 

然后,你可以为了打印:

foreach($combined as $food, $val) 
{ 
    echo "$food is at $val"; 
} 

如果您不喜欢ksort,您可以始终颠倒array_combine函数中的数组顺序,然后只需使用常规的sort

0
$int_array = array('$v1' => 2 , '$v2' => 30 , '$v3' => 4 , '$v4' => 10); 
$string_array = array('banana' , 'cake' , 'apple' , 'potato'); 

//First , sort the int_array by value. (low to hight) 
$int_array = asort($int_array); 

//Second , echo string according to sorted int_array 
foreach($int_array as $v => $num) 
{ 
echo $string_array[ substr($v , 2 , 1) - 1 ]; 
} 

适合你吗?

+0

如果您发现问题的答案有用,请更新我们。 – 2012-02-27 20:50:22

+0

正在处理... – virusbogdan 2012-02-27 20:53:36

0

如果您的值是唯一的,那么你可以使用一个关联数组:

<?php 
$data = array(
    1=>"Banana", 
    2=>"Apple", 
    4=>"Patato", 
    30=>"Cake"); 

//sort the data by the keys if you want 
aksort($data); 
//Then access it like normal 
echo $data[2]; //outputs "Apple" 

如果你的价值观是不是唯一的,那么你将有一个更难的时间。一种方法是使用具有查找功能的多维数组。

<?php 
$data = array(
      array(1,"Banana"), 
      array(2,"Apple"), 
      array(4,"Patato"), 
      array(30,"Cake") 
     ); 

echo lookup($data,30); //Outputs "Cake" 

function lookup($arr,$key) { 
    foreach($arr as $a) { 
    if($a[0] == $key) 
     return $a[1]; 
    } 
    return NULL; 
} 

,你想修改的查询()函数来处理重复值像你想,我的功能仅仅是将输出它找到的第一个。

0

你看到array_multisort()?它会对多个列数组进行排序而不会破坏它们之间的对应关系,这看起来像你想要的。

虽然现在我有一个排的阵列有强烈的偏好,这是多么大多数表格数据存储在编程语言,因此是一个更“自然”的方式:

array(
    array('variable' => 1, 'text' => 'Banana'), 
    array('variable' => 30, 'text' => 'Cake' ), 
    ... 
) 

(添加或删除阵列或间接按照自己的喜好,但不变的是,mainArray [0]包含一个完整的数据行的价值(即V1和文本1在某些阵列层次))

...并使用functional sort

usort($mainArray, function($left, $right) { 
    if ($left['variable'] < $right['variable']) 
     return -1; 
    else if ($left['variable'] == $right['variable']) 
     return 0; 
    else 
     return +1; 
}); 
相关问题