2012-02-06 18 views
6

ठीक है, पृष्ठभूमि का एक सा,एसक्यूएल CodeIgniter में एक वस्तु में परिणाम में शामिल होने

  • बस CodeIgniter में
  • एसक्यूएल और सर्वर साइड स्क्रिप्ट के एक प्रशंसक नहीं
  • मुझे पता है क्या मिलती है
  • हैं
  • मेरे पास पहली बार

ऐसा इसलिए है क्योंकि आम तौर पर परिणामस्वरूप निम्नलिखित उदाहरण होते हैं। लेकिन मैं पुनरावृत्ति को अनदेखा करने के लिए कोड बनाने के बिना इसे पार्स करना चाहता था। यह एक 3-टेबल नमूना शामिल है। के रूप में मैं अधिक तालिकाओं में शामिल होने दोहरा मूल्यों के मुद्दे बढ़ जाती है:

table1.authorid table1.authorname table2.books  table3.favorited 
     1     john   john's book 1  jean 
     1     john   john's book 1  joe 
     1     john   john's book 2  ken 
     1     john   john's book 2  mark 
     2     mark   mark's book 1  alice 
     2     mark   mark's book 1  ted 
     2     mark   mark's book 2  sarah 
     2     mark   mark's book 2  denise 

वहाँ CodeIgniter (या सादे पीएचपी) में एक तरीका है कि मैं इस सरणी प्रपत्र हो और (json तरह json की तरह कुछ में बदल और यह पार्स कर सकते है)

$result = [ 
    { 
     'authorid':1, 
     'authorname':'john', 
     'books':['john's book1','john's book2'], 
     'favorited':['jean','joe','ken','mark'] 
    }, 
    { 
     'authorid':2, 
     'authorname':'mark', 
     'books':['mark's book1','mark's book2'], 
     'favorited':['alice','ted','sarah','denise'] 
    } 
] 

अद्यतन: इस वस्तुओं की इस गहराई तक सीमित नहीं है/सरणियों (उदाहरण की तरह)। यह गहरा हो सकता है (वस्तुओं में सरणी, वस्तुओं में सरणी, सरणी में वस्तुओं, वस्तुओं में वस्तुओं)

उत्तर

7
// first, we need the SQL results in the $result_array variable 
$sql = 'SELECT ...'; // your SQL command 
$result_array = $this->db->query($sql)->result_array(); // codeigniter code 

// here the real answer begins 
$result = array(); 

foreach ($result_array as $row) 
{ 
    if (!isset($result[$row['authorid']]) 
    { 
     $author = new StdClass(); 
     $author->authorid = $row['authorid']; 
     $author->authorname = $row['authorname']; 
     $author->books = array($row['books']); 
     $author->favorited = array($row['favorited']); 
     $result[$row['authorid']] = $author; 
    } 
    else 
    { 
     if (!in_array($row['books'], $result[$row['authorid']]->books)) 
     { 
      $result[$row['authorid']]->books[] = $row['books']; 
     } 
     if (!in_array($row['favorited'], $result[$row['authorid']]->favorited)) 
     { 
      $result[$row['authorid']]->favorited[] = $row['favorited']; 
     } 
    } 
} 

$result = array_values($result); 
echo json_encode($result); 
+0

बस मुझे जो चाहिए था। धन्यवाद! – Joseph

+0

मुझे खुशी है कि मैं मदद कर सकता हूं। –

संबंधित मुद्दे